mysql多表查询
2018-07-07 本文已影响0人
iiceBug
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
- UNION 内部的 SELECT 语句必须拥有相同数量的列。
- 列也必须拥有相似的数据类型。
- 同时,每条 SELECT 语句中的列的顺序必须相同。
- UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名
- union all操作符同理,但是会保留重复的行。
举例
SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA
Union操作符可理解为将两个表进行垂直拼接,结果集不产生多的列。
JOIN可以细分如下:
- join ( inner join )
如果表中有至少一个匹配,则返回行(INNER JOIN 与 JOIN)
select * from table1 t1
join table2 t2
on t1.id = t2.id
where t1.id < 100 - left join (left out join)
即使右表中没有匹配,也从左表返回所有的行 - right join ( right out join)
即使左表中没有匹配,也从右表返回所有的行 - full join(mysql不支持,可以使用union all达到效果,可参考https://blog.csdn.net/dujianxiong/article/details/79352520)
只要其中一个表中存在匹配,就返回行 - cross join
返回笛卡尔积
注:更多细节参考https://blog.csdn.net/ljxfblog/article/details/52066006