网站首页 > 技术文章 正文
本章主要讲解JOIN的用法。演示数据如下:表一T_Student学生信息表,表二T_Score学生成绩表。
前面都是写的单个表的查询,下面介绍多个表的查询。在正常的业务逻辑中,数据都是按业务类型存放在不同表内,所以在实际的业务中我们会进程用到多表关联查询。有AB两张表,显示红色区域的数据。现在我们设定A表为T_StuNumber、B表为T_Score。
举例1:显示红色区域的数据。以C_StuNumber字段为比较字段。有两种写法,结果都是一样的。
SELECT T_Student.C_StuNumber , T_Student.C_Name ,
T_Score.I_Art , T_Score.I_Math ,
T_Score.I_English , T_Score.I_Art
FROM T_Student , T_Score
WHERE T_Student.C_StuNumber = T_Score.C_StuNumber
或者这样写:
SELECT T_Student.C_StuNumber , T_Student.C_Name ,
T_Score.I_Art , T_Score.I_Math ,
T_Score.I_English , T_Score.I_Art
FROM T_Student INNER JOIN T_Score
ON T_Student.C_StuNumber= T_Score.C_StuNumber
举例2:显示红色区域的数据。查询T_Student表中所有学生的成绩,如果没有成绩的则缺省为NULL。需要使用JION
SELECT T_Student.C_StuNumber , T_Student.C_Name ,
T_Score.I_Art , T_Score.I_Math ,
T_Score.I_English , T_Score.I_Art
FROM T_Student LEFT JOIN T_Score
ON T_Student.C_StuNumber= T_Score.C_StuNumber
举例3:显示红色区域的数据。以T_Score为基础查询成绩,没有成绩的学生不显示。
SELECT T_Student.C_StuNumber , T_Student.C_Name ,
T_Score.I_Art , T_Score.I_Math ,
T_Score.I_English , T_Score.I_Art
FROM T_Student RIGHT JOIN T_Score
ON T_Student.C_StuNumber = T_Score.C_StuNumber
举例4:显示红色区域的数据。以T_StuNumber为基础查询,排除T_Score表中的学生。
SELECT T_Student.C_StuNumber , T_Student.C_Name ,
T_Score.I_Art , T_Score.I_Math ,
T_Score.I_English , T_Score.I_Art
FROM T_Student LEFT JOIN T_Score
ON T_Student.C_StuNumber = T_Score.C_StuNumber
WHERE T_Score.C_StuNumber IS NULL
举例5:显示红色区域的数据。以T_Score为基础查询,排除T_StuNumber表中的学生。
SELECT T_Student.C_StuNumber , T_Student.C_Name ,
T_Score.I_Art , T_Score.I_Math ,
T_Score.I_English , T_Score.I_Art
FROM T_Student RIGHT JOIN T_Score
ON T_Student.C_StuNumber = T_Score.C_StuNumber
WHERE T_Student.C_StuNumber IS NULL
举例6:显示红色区域的数据。显示T_StuNumber和T_Score两张表内所有的数据。
SELECT T_Student.C_StuNumber , T_Student.C_Name ,
T_Score.I_Art , T_Score.I_Math ,
T_Score.I_English , T_Score.I_Art
FROM T_Student FULL OUTER JOIN T_Score
ON T_Student.C_StuNumber = T_Score.C_StuNumber
举例7:显示红色区域的数据。显示T_StuNumber和T_Score两张表中不重复的数据。
SELECT T_Student.C_StuNumber , T_Student.C_Name ,
T_Score.I_Art , T_Score.I_Math ,
T_Score.I_English , T_Score.I_Art
FROM T_Student FULL OUTER JOIN T_Score
ON T_Student.C_StuNumber = T_Score.C_StuNumber
WHERE T_Student.C_StuNumber IS NULL OR T_Score.C_StuNumber IS NULL
总结:JOIN在多表联合查询中经常被使用,所以请仔细区分LEFT、RIGHT、INNER和FULL OUTER的使用区别。
猜你喜欢
- 2024-11-16 从阿里手册引出的Join查询思考(阿里技术手册)
- 2024-11-16 Python中join()方法——字符串、路径拼接的常用方法
- 2024-11-16 oracle 多表连接查询 join(一)(oracle多表联查效率优化)
- 2024-11-16 让程序员头疼的微服务下数据聚合join(一)
- 2024-11-16 神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程你是否知道?
- 2024-11-16 MySQL的Join到底能不能用,一文搞懂它
- 2024-11-16 一文看懂Mycat跨分片Join实现--全局表、ER分片、HBT、sharejoin
- 2024-11-16 为什么大厂不建议使用多表join?(为什么要多表查询)
- 2024-11-16 SQL Server 2012 高级用法(三)之Join
- 2024-11-16 什么,LEFT JOIN 会变成 JOIN?(left join作用)
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-