join on和left join on有什么区别
时间: 2023-11-26 16:49:07 浏览: 146
在使用join时,on和where都可以用来指定关联条件,但是它们之间有一些区别。
使用on时,关联条件是在执行join操作时就进行了匹配,而where是在执行完join操作后再进行条件匹配。因此,使用on可以提高查询效率,因为它可以减少不必要的匹配。
而left join和join的区别在于,left join会返回左表中所有的记录,而join只会返回两个表中都存在的记录。因此,如果左表中有一些记录在右表中没有匹配到,那么在使用left join时,这些记录也会被返回,但是在使用join时,这些记录会被过滤掉。
下面是一个使用join on和left join on的例子:
```sql
-- 使用join on
SELECT *
FROM table1
JOIN table2
ON table1.id = table2.id
WHERE table1.name = 'John';
-- 使用left join on
SELECT *
FROM table1
LEFT JOIN table2
ON table1.id = table2.id
WHERE table1.name = 'John';
```
相关问题
inner join on和left join on区别
INNER JOIN ON 和 LEFT JOIN ON 是关系型数据库中的两种常见的 JOIN 操作。它们的区别在于 JOIN 的方式和结果集的不同。
INNER JOIN ON 是一种基于两个表中有相同值的列来连接表的方式,它会返回两个表中都存在的数据。如果两个表中的数据没有匹配的值,则不会显示这些数据。
LEFT JOIN ON 也是基于两个表中有相同值的列来连接表的方式,但它会返回左侧表中的所有数据,不论右侧表中是否存在匹配的值。如果右侧表中没有匹配的值,则返回 NULL。
简单来说,INNER JOIN ON 只返回两个表中都存在的数据,而 LEFT JOIN ON 则返回左侧表的所有数据和右侧表中匹配的数据。
JOIN ON 和left join on
JOIN ON 和 LEFT JOIN ON 是 SQL 中用于连接两个表的操作。JOIN ON 是 INNER JOIN 的简写,它返回两个表中匹配的行。LEFT JOIN ON 则返回左表中所有的行,以及右表中与左表中行匹配的行,如果右表中没有与左表中行匹配的行,则返回 NULL 值。
举个例子,假设有两个表 A 和 B:
表 A:
| id | name |
|----|------|
| 1 | Tom |
| 2 | Jack |
| 3 | Bob |
表 B:
| id | age |
|----|-----|
| 1 | 20 |
| 3 | 25 |
| 4 | 30 |
如果使用 INNER JOIN ON 连接这两个表,可以写成:
```
SELECT A.name, B.age
FROM A
JOIN B ON A.id = B.id
```
结果会返回:
| name | age |
|------|-----|
| Tom | 20 |
| Bob | 25 |
如果使用 LEFT JOIN ON 连接这两个表,可以写成:
```
SELECT A.name, B.age
FROM A
LEFT JOIN B ON A.id = B.id
```
结果会返回:
| name | age |
|------|-----|
| Tom | 20 |
| Jack | NULL|
| Bob | 25 |
可以看到,LEFT JOIN ON 返回了表 A 中所有的行,同时也返回了表 B 中与表 A 中行匹配的行,如果没有匹配的行,则返回 NULL 值。
阅读全文