码迷,mamicode.com
首页 > 数据库 > 详细

SQL多表联查总结

时间:2017-08-30 20:00:47      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:操作   表结构   条件   logs   select   user   log   卡尔   查询   

交叉连接:(不常用)
返回两个表的笛卡尔乘积(也即全组合排列)中符合查询条件的数据行。

内连接
返回连接表中符合连接条件和查询条件的数据行。

左外连接
返回符合连接条件和查询条件(即:内连接)的数据行,且还返回左表中不符合连接条件但符合查询条件的数据行。

右外连接
返回符合连接条件和查询条件(即:内连接)的数据行,且还返回右表中不符合连接条件但符合查询条件的数据行。

全外连接(不常用,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

 

SQL多表联查总结

标签:操作   表结构   条件   logs   select   user   log   卡尔   查询   

原文地址:http://www.cnblogs.com/itZhy/p/7454718.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!