sql语句join和left join及right join 区别
时间: 2023-10-20 18:34:52 浏览: 93
数据库Left join , Right Join, Inner Join 的相关内容,非常实用
`JOIN`、`LEFT JOIN` 和 `RIGHT JOIN` 是 SQL 中用于合并两个或多个表的关键字。它们之间的区别在于合并的方式和结果集中包含的数据。
- `JOIN`:也称为 `INNER JOIN`,返回两个表中同时满足连接条件的行。只有当两个表中的列具有匹配的值时,才会返回这些行。
- `LEFT JOIN`:返回左表中的所有行,以及右表中满足连接条件的行。如果右表中没有与左表匹配的行,则会返回 NULL 值。换句话说,左连接保留了左表的所有记录。
- `RIGHT JOIN`:返回右表中的所有行,以及左表中满足连接条件的行。如果左表中没有与右表匹配的行,则会返回 NULL 值。换句话说,右连接保留了右表的所有记录。
这里是一个示例,假设我们有两个表:`Customers` 和 `Orders`。
```sql
Customers 表:
+----+----------+
| id | name |
+----+----------+
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
+----+----------+
Orders 表:
+----+------------+---------+
| id | product | cust_id |
+----+------------+---------+
| 1 | Phone | 2 |
| 2 | Laptop | 1 |
| 3 | Headphones | 3 |
+----+------------+---------+
```
下面是使用不同连接类型的示例查询:
1. 使用 `JOIN`:
```sql
SELECT Customers.name, Orders.product
FROM Customers
JOIN Orders ON Customers.id = Orders.cust_id;
```
结果:
```
+-------+------------+
| name | product |
+-------+------------+
| Alice | Laptop |
| Bob | Phone |
| Charlie | Headphones |
+-------+------------+
```
2. 使用 `LEFT JOIN`:
```sql
SELECT Customers.name, Orders.product
FROM Customers
LEFT JOIN Orders ON Customers.id = Orders.cust_id;
```
结果:
```
+-------+------------+
| name | product |
+-------+------------+
| Alice | Laptop |
| Bob | Phone |
| Charlie | Headphones |
+-------+------------+
```
3. 使用 `RIGHT JOIN`:
```sql
SELECT Customers.name, Orders.product
FROM Customers
RIGHT JOIN Orders ON Customers.id = Orders.cust_id;
```
结果:
```
+-------+------------+
| name | product |
+-------+------------+
| Alice | Laptop |
| Bob | Phone |
| Charlie | Headphones |
+-------+------------+
```
希望以上解释能够帮助你理解 `JOIN`、`LEFT JOIN` 和 `RIGHT JOIN` 的区别。
阅读全文