SQL left join 、right join 、inner join
程序员文章站
2022-05-09 17:21:53
...
sql的left join 、right join 、inner join之间的区别
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行
实例
sql架构:
Create table If Not Exists Employee (Id int, Name varchar(255), Salary int, ManagerId int)
Truncate table Employee
insert into Employee (Id, Name, Salary, ManagerId) values ('1', 'Joe', '70000', '3')
insert into Employee (Id, Name, Salary, ManagerId) values ('2', 'Henry', '80000', '4')
insert into Employee (Id, Name, Salary, ManagerId) values ('3', 'Sam', '60000', 'None')
insert into Employee (Id, Name, Salary, ManagerId) values ('4', 'Max', '90000', 'None')
cross join
SELECT *
FROM Employee AS a, Employee AS b
;
前 3 列来自表格 a ,后 3 列来自表格 b
从两个表里使用 Select 语句可能会导致产生 笛卡尔乘积 。在这种情况下,输出会产生 4*4=16 个记录。然而我们只对雇员工资高于经理的人感兴趣。所以我们应该用 WHERE 语句加 2 个判断条件。
SELECT
*
FROM
Employee AS a,
Employee AS b
WHERE
a.ManagerId = b.Id
AND a.Salary > b.Salary
;
inner join:
select a.Name Employee
from Employee a
inner join Employee b
on a.ManagerId=b.Id
where a.Salary>b.Salary;
推荐阅读
-
awk实现Left、join查询、去除重复值以及局部变量讲解例子
-
ThinkPHP采用原生query实现关联查询left join实例
-
Mysql inner join on的用法实例(必看)
-
sql的left join 、right join 、inner join之间的区别
-
数据库Left join , Right Join, Inner Join 的相关内容,非常实用
-
SQL联合查询inner join、outer join和cross join的区别详解
-
Spark SQL join的三种实现方式
-
非常详细的SQL--JOIN之完全用法
-
解析mysql left( right ) join使用on与where筛选的差异
-
SQL中的left join right join