多表连接查询

SQL INNER JOIN

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name

原始表

sql语句
现在,我们希望列出所有人的定购。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
结果集

SQL LEFT JOIN

SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

原始表

现在,我们希望列出所有的人,以及他们的定购 - 如果有的话。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
结果集

SQL RIGHT JOIN

RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

原始表

现在,我们希望列出所有的定单,以及定购它们的人 - 如果有的话。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
结果集

SQL FULL JOIN

只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name

原始表

现在,我们希望列出所有的人,以及他们的定单,以及所有的定单,以及定购它们的人。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
结果集

多个表的连接

例:原文:https://blog.csdn.net/u012111465/article/details/75585940
下面三个表分别是:table1表、table2表、table3表
目标:查询A公司的所有30岁以下员工的名字。

table1

table2

table3

SELECT employee_name
FROM (table3 c LEFT JOIN TABLE1 a
ON c.employee_id=a.employee_id )
LEFT JOIN table2 b ON b.company_id=a.company_id
WHERE company_name ='A' and employee_age<30;

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容