赞
踩
1. 交叉连接(CROSS JOIN)
2. 内连接(INNER JOIN)
3. 外连接(LEFT JOIN/RIGHT JOIN)
4. 联合查询(UNION 与 UNION ALL)
5. 全连接(FULL JOIN)
交叉连接(没有任何关联条件,查询所有表)
select * form a,b,c
或者 :
select * from a cross join b cross join c
内连接(多表中同时符合某种条件的数据记录的集合)
select * from a,b where a.id = b.id
或者 :
select * from a inner join b on a.id = b.id
分析 :
select * from 表1 inner join 表2 on 条件
内连接分为三类
①等值连接: on a.id = b.id
②不等值连接 : on a.id > b.id
③自连接: select * from a as a1 inner join a as a2 on a.id = a2.pid
[自连接就是自己连接自己 条件id和pid]
INNER JOIN 可以缩写为 JOIN
外连接
左外连接:
LEFT OUTER JOIN 缩写 LEFT JOIN
以左表为主,先查询出左表,按照ON之后关联条件匹配右表,没有匹配到的用NULL填充
右外连接:
RIGHT OUTER JOIN 缩写 RIGHT JOIN
以右表为主,先查询出右表,按照ON之后关联条件匹配左表,没有匹配到的用NULL填充
联合查询
表的数据结构一定要一样,把多个结果集集中到一起,UNION前的结果为基准
union 相同的记录行会合并
union all 不会合并重复的记录行
全连接( 完整外部连接返回左表和右表中的所有行)
mysql中不支持全连接,可以使用LEFT JOIN 和 UNION 和 RIGHT JOIN 联合使用
select * from A left join B on A.id = b.id union select * from a right join on a.id = b.id
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。