美文网首页
sql 基础(7)自连接

sql 基础(7)自连接

作者: 洛水青柳2017 | 来源:发表于2018-02-08 11:26 被阅读0次

集合 是SQL能处理的唯一数据结构!

自连接是不亚于 CASE 表达式的重要技术,请一定熟练掌握。最后说一个需要注意的地方,与多表之间进行的普通连接相比,自连接的性能开销更大(特别是与非等值连接结合使用的时候),因此用于自连接的列推荐使用主键或者在相关列上建立索引。

在日常的数据处理过程中自连接似乎用的很少,那是因为缺少对自连接认识,遇到问题,都采用数据库特有的函数或者标量(面向过程)来解决了!

下面是几个问题:

1.水果的组合问题

product表 查询语句 对应查询结果(由左至右)

2.水果价格的排名问题

productnew 查询语句 查询结果

3分地区后的水果价格排序

表结构 查询语句和结果

--备用代码

-- 1_2自连接示例

SELECT a.`name` ,b.`name` FROM  1_2product  as a ,1_2product as b  -- 查询所有组合

SELECT  a.`name` ,b.`name` FROM  1_2product  as a ,1_2product as b  WHERE  a.`name` =b.`name` -- 查询所有重复组合

SELECT  a.`name` ,b.`name` FROM  1_2product  as a ,1_2product as b  WHERE  a.`name` <>b.`name`-- 查询所有不重复组合

SELECT  a.`name` ,b.`name` FROM  1_2product  as a ,1_2product as b  WHERE  a.`name` >b.`name`  -- 查询所有不重复列

SELECT a.`name` ,b.`name` FROM  1_2product  as a ,1_2product as b  WHERE  a.`name` >=b.`name` -- 查询可重复集合

SELECT  a.`name` ,b.`name` ,c.`name` FROM  1_2product  as a ,1_2product as b ,1_2product as c

WHERE  a.`name` >b.`name`  and  b.`name` >  c.`name`  -- 三个产品组合的集合组合

-- 删除重复的行 (mysql中没有相应的函数 )

--1查询价格相同的水果

SELECT DISTINCT  a.`name`,a.price FROM 1_2productnew as a  ,1_2productnew as b

WHERE a.`name`<>b.`name`  and a.price =b.price    ORDER BY price 

--2根据价格大小对 水果进行排序 ,分跳过和不跳过

--2_1运用子查询 

SELECT P1.name,P1.price,

      (SELECT COUNT(P2.price) FROM 1_2productnew P2 WHERE P2.price > P1.price) + 1 AS rank_1,

      (SELECT COUNT( DISTINCT P2.price) FROM 1_2productnew P2 WHERE P2.price > P1.price) +1  as rank_2

FROM 1_2productnew P1

ORDER BY rank_1;

--2_2运用自连接

SELECT P1.name,P1.price ,COUNT(P2.price)+1 as rank_1,COUNT(DISTINCT P2.price)+1 as rank_2

FROM    1_2productnew P1  LEFT  join 1_2productnew P2    on  P1.price

相关文章

  • sql 基础(7)自连接

    集合是SQL能处理的唯一数据结构! 自连接是不亚于CASE表达式的重要技术,请一定熟练掌握。最后说一个需要注意的地...

  • sql自链接的理解

    如何理解SQL中的自连接? - 知乎

  • sql之自连接

    题目:查找当前薪水(to_date='9999-01-01')排名第n多的员工编号emp_no、薪水salary、...

  • 六、SQL–表连接⑤(自连接)

    自连接:参与连接的表为同一张表,即与自身连接。交叉连接、内连接、外连接等连接方式中只要参与连接的表是同一张表,那么...

  • EF Core 备忘

    模糊查询sql linq 内连接查询sql linq 左连接查询sql linq 左连接查询(连接内带条件)sql...

  • SQL基础应用

    MySQL内置功能 连接数据库 提供内置命令 SQL的基础应用 SQL的介绍 结构化查询语言,遵循SQL92标准(...

  • 三,MySQL基础应用

    一,MySQL内置功能 连接数据库 常用内置命令 二,SQL的基础应用 2,1 SQL介绍 2,2 SQL常用种类...

  • sql 完全/交叉/自连接

    完全连接 full join 结果集包含三部分内容: 两个表中匹配所有行记录。 左表中那些在右表中找不到匹配的行的...

  • 数据库基础知识整理-连接表操作

    数据库基础知识整理-连接表操作 表连接 SQL 的最有利的特征之一是能够组合来自两个或多个表的数据。在SQL中,“...

  • 22 SQL99语法的新特性

    SQL99 在 SQL92 的基础上提供了一些特殊语法,比如 NATURAL JOIN 用来表示自然连接。我们可以...

网友评论

      本文标题:sql 基础(7)自连接

      本文链接:https://www.haomeiwen.com/subject/tooroxtx.html