SQL多表联查总结
2024-08-27 23:59:59
交叉连接:(不常用)
返回两个表的笛卡尔乘积(也即全组合排列)中符合查询条件的数据行。
内连接
返回连接表中符合连接条件和查询条件的数据行。
左外连接
返回符合连接条件和查询条件(即:内连接)的数据行,且还返回左表中不符合连接条件但符合查询条件的数据行。
右外连接
返回符合连接条件和查询条件(即:内连接)的数据行,且还返回右表中不符合连接条件但符合查询条件的数据行。
全外连接(不常用,MySQL不支持)
返回符合连接条件和查询条件(即:内连接)的数据行,且还返回左表中不符合连接条件但符合查询条件的数据行以及右表中不符合连接条件但符合查询条件的数据行。
例子
表结构和数据:
users表
id name
1 李四
2 王五
4 张三
logs表
id user_id log
1 1 操作了A
2 1 操作了B
3 2 操作了C
4 2 操作了D
5 3 操作了E
交叉连接:
语句
SELECT
a.`id`,
a.`name`,
b.`log`
FROM
`users` AS a,
`logs` AS b
结果
id name log
1 李四 操作了A
2 王五 操作了A
4 张三 操作了A
1 李四 操作了B
2 王五 操作了B
4 张三 操作了B
1 李四 操作了C
2 王五 操作了C
4 张三 操作了C
1 李四 操作了D
2 王五 操作了D
4 张三 操作了D
1 李四 操作了E
2 王五 操作了E
4 张三 操作了E
内连接:
语句
SELECT
a.`id`,
a.`name`,
b.`log`
FROM
`users` AS a
INNER JOIN `logs` AS b ON a.`id` = b.`user_id`
结果
id name log
1 李四 操作了A
1 李四 操作了B
2 王五 操作了C
2 王五 操作了D
左外连接:
语句
SELECT
a.`id`,
a.`name`,
b.`log`
FROM
`users` AS a
LEFT JOIN `logs` AS b ON a.`id` = b.`user_id`
结果
id name log
1 李四 操作了A
1 李四 操作了B
2 王五 操作了C
2 王五 操作了D
4 张三 NULL
右外连接:
语句
SELECT
a.`id`,
a.`name`,
b.`log`
FROM
`users` AS a
RIGHT JOIN `logs` AS b ON a.`id` = b.`user_id`
结果
id name log
1 李四 操作了A
1 李四 操作了B
2 王五 操作了C
2 王五 操作了D
NULL NULL 操作了E
最新文章
- FlexSlider jQuery滑动切换插件 参数
- LMAX Disruptor—多生产者多消费者中,消息复制分发的高性能实现
- Kinect2 随记
- c#单例模式的实现
- Java中Unicode的编码和实现
- 主动模式下FTP的详细工作过程(转) 挺详细
- 安装和使用screen
- 怎么找到MyEclipse->;add struts capabilities
- Highcharts下载与使用_数据报表图2
- [Qt] QString 和 char* 转换
- OC基础 代理和协议
- WEB服务器1--开篇
- 显示Title和隐藏Title的ListView
- UMeditor 百度编辑器Mini学习
- Programming C#.Classes and Objects.成员方法
- 使用Iterator遍历Sheet(POI)验证及解释结果有序性
- canvas作图
- Vue.js学习 — 微信公众号菜单编辑器(一)
- Java:对象的强、软、弱和虚引用[转]
- Java 程序国际化