首页 > 英超 > MySQL本身不支持全连接&#xff0c
2024
02-27

MySQL本身不支持全连接&#xff0c

  交叉连接(CROSS JOIN);内连接(INNER JOIN);外连接(LEFT JOIN/RIGHT JOIN);联合查询(UNION 与 UNION ALL);全连接(FULL JOIN)【在MySQL中本身不支持全连接,若要使用,得需要一些方法实现】.

1.交叉连接(CROSS JOIN)

  注:没有任何关联条件,结果是 笛卡尔积,结果集 会很大,没有意义,很少使用。 

2.内连接(INNER JOIN)

  注:多表中同时符合某种条件的数据记录的集合。

  内连接分为三类:

  ① 等值连接:;

  ② 不等值连接:;

  ③ 自连接:;

3. 外链接

  外链接又分为左外链接(LEFT JOIN)和右外链接(RIGHT JOIN)

  1)左外链接

  ,以左表为主,先查询出左表,按照  后的关联条件匹配右表,没有匹配到的用  填充,可以简写             成 .

  2)右外链接

  ,以右表为主,先查询出右表,按照  后的关联条件匹配坐表,没有匹配到的用  填充,可以简写             成 .

4.联合查询(UNION 与 UNION ALL)

  注:

就是把多个结果集集中在一起,UNION 前的结果为基准,需要注意的是联合查询的列数要相等,相同的记录行会合并(如果前者 select 和 后者 select 有重复,则会合并,且以前面的为基准);如果使用 UNION ALL,不会合并重复的记录行;在效率方面,UNION 高于 UNION ALL。

5.全连接(FULL JOIN)

  MySQL本身不支持全连接,如果要使用全连接,可以使用 LEFT JOIN 和 UNION 和 RIGHT JOIN 联合使用。

6)嵌套查询【不推荐使用,效率不可把控】

  team:参赛队伍表

字段名类型描述teamIDint主键teamNamevarchar(20)队伍名称

  match:赛程表

字段名称类型描述matchIDint主键hostTeamIDint主队IDguestTeamIDint客队IDmatchResultvarchar(20)比赛结果matchTimedate比赛日期

  其中,match赛程表 中的 hostTeamID 与 guestTeamID 都和 team表 中的 teamID关联,查询 2006-6-1 到 2006-7-1 之间举行的所有比赛,并且用以下形式列出:拜仁 2:0 不莱梅 2006-6-21。

  解题思路:

 先找出我们的结果需求:主队名称  比赛结果  客队名称  比赛日期分析表与表之间的关联关系,match表中的主队ID(hostTeamID)和客队ID(guestTeamID)都和team表中的teamID关联,通过关联查询可以获得主队名称和客队名称根据match表中的matchTime字段查询 2006-6-1到2006-7-1之间举行的比赛即可

  方法一:

  方法二:

  最后的时间比较也可用 between ... and

MySQL本身不支持全连接,

本文》有 0 条评论

留下一个回复