SQL-join(inner join)、left join、right join、full join
2024-10-07 11:10:13
0、JOIN 类型
有时我们需要从两个或更多的表中获取结果,数据库中的表可通过键将彼此联系起来。每个表中都有一个主键,主键(Primary Key)是一个列,值都唯一。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。(也就是说,用join的时候,最好先保证多个表之间用于关联的表主键值唯一,但也不排除,确实有很多地方,用到的表主键值不唯一,这个时候,用join就会造成一对多、多对一的情况,需要特别注意)
JOIN 类型,以及它们之间的差异。
- JOIN: 返回左右表有匹配上的行(INNER JOIN(内连接),JOIN默认使用内连接,可以省略INNER);
- LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行,右表的列值为空;
- RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行,左表的列值为空;
- FULL JOIN: 只要其中一个表中存在数据行,就返回行;
1、JOIN(inner join内连接)
数据源:
Persion表:
Orders表:
//使用连表查询
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons,Orders
WHERE Persons.Id_P = Orders.Id_P
//使用join查询
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName
结果:
2、LEFT JOIN
//使用left join查询,只要左表有数据行,就会生成一行。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
结果:
3、RIGHT JOIN
//使用right join查询,只要右表有数据行,就会生成一行。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
结果:
4、FULL JOIN
//使用full join查询,只要其中一个表中存在数据行,就会生成一行,另一个表的列值为空。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
结果:
最新文章
- 利用SegmentedControl切换控制器的view
- Dojo
- Java性能调优
- Fiddler测试WebApi的Post方法报错
- Flex条件判断中注意事项
- client/scroll/offset width/height/top/left ---记第一篇博客
- 搭建docker私有仓库,建立k8s集群
- 一塔湖图(codevs 1024)
- placeholder的兼容性探索之路
- python日志模块logging
- glibc学习介绍篇
- 【关于JavaScript】自动计算的实例
- poj2231---暴力
- 猪和python(pig and python)
- 手动启动Android模拟器
- Spring总结_02_Spring概述
- 消息队列NetMQ 原理分析5-StreamEngine、Encord和Decord
- Cookies的使用之购物车的实现
- Lua中的元表与元方法
- zookeepeer使用zkCli.sh命令
热门文章
- 开关电源(DC-DC)与LDO电源的区别---纹波
- TensorFlow从入门到入坑(2)
- shell IO重定向
- [转]DDR内存条rank的概念和区分
- jQuery常用验证
- Linux下文件的三种时间标记:访问时间、修改时间、状态改动时间 (转载)
- 最短路spaf及dijkstra模板
- Luogu P1023 [NOIp2000提高组]税收与补贴问题 | 数学
- hdu 5090 Game with Pearls (额,, 想法题吧 / 二分图最大匹配也可做)
- hdu 5057 Argestes and Sequence (数状数组+离线处理)