Sql联合查询

2019-02-11  本文已影响40人  andforce

https://blog.csdn.net/lukabruce/article/details/80568796

LEFT JOIN、RIGHT JOIN、INNER JOIN以及CROSS JOIN的区别

LEFT JOIN 返回 左表的所有记录 以及 右表中与左表联结字段相等的记录

left join
RIGHT JOIN 返回 右表的所有记录 以及 左表中与右表联结字段相等的记录
right join
INNER JOIN 返回 两个表中联结字段相等的记录
inner join

CROSS JOIN 把表A和表B的数据进行一个N*M的组合,即笛卡尔积,使用较少,后面不能跟ON关键字;
FULL JOIN MySql没有FULL JOIN,但是可以用union实现

full join

基本语法

FROM 表1 LEFT JOIN 表2 ON 表1.字段号=表2.字段号
FROM 表1 RIGHT JOIN 表2 ON 表1.字段号=表2.字段号
FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号

举例说明

有两张表:


student表 persion表

查询student_number=id_card_number的数据

左联查询:

select * from persion left join student on persion.id_card_number=student.student_number;
左联查询结果

可以看出,左表(persion)中的所有数据都返回了,右表(student)中总共有5条数据,但是只返回了3条数据,这3天数据跟左表中的id_card_number数值是相等的。

右联查询:

select * from persion right join student on persion.id_card_number=student.student_number;
右联查询结果

右表数据全部返回,左表返回了和右表相同的几条。

等值连接查询

select * from persion inner join student on persion.id_card_number=student.student_number;
等值连接查询结果

两表取交际

AS的用法


AS就是别名的意思,其他没有区别

select * from 表1 as 表1别名 inner join 表2 as 表2别名 on 表1别名.字段=表2别名.字段;

例如

select * from table1 as t1 inner join table2 as t2 on t1.name=t2.name;

上一篇下一篇

猜你喜欢

热点阅读