sqlite3 join语句
一、什么是JOIN语句
JOIN是SQL中用于合并两个或多个表的操作。它通过使用共同的列将相关的行组合在一起,从而实现数据的联接。在SQLite中,JOIN语句有多种类型,包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN等。
二、INNER JOIN
INNER JOIN也称为等值连接,它返回两个表中满足连接条件的所有行。以下是INNER JOIN的几种常见用法:
1. 查询订单表和客户表,返回订单表中所有的订单号、客户姓名和订单日期:
```sql
多表left joinSELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID = Customers.CustomerID;
```
2. 查询订单表和产品表,返回订单表中所有的订单号、产品名称和产品价格:
```sql
SELECT Orders.OrderID, Products.ProductName, Products.Price
FROM Orders
INNER JOIN Products
ON Orders.ProductID = Products.ProductID;
```
3. 查询订单表和客户表,返回订单表中所有的订单号、客户姓名和订单日期,但只包括客户表中存在的客户:
```sql
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID = Customers.CustomerID
WHERE Customers.CustomerID IS NOT NULL;
```
4. 查询订单表和产品表,返回订单表中所有的订单号、产品名称和产品价格,但只包括产品表中存在的产品:
```sql
SELECT Orders.OrderID, Products.ProductName, Products.Price
FROM Orders
INNER JOIN Products
ON Orders.ProductID = Products.ProductID
WHERE Products.ProductID IS NOT NULL;
```
5. 查询订单表和产品表,返回订单表中所有的订单号、产品名称和产品价格,但只包括订单表和产品表中都存在的订单:
```sql
SELECT Orders.OrderID, Products.ProductName, Products.Price
FROM Orders
INNER JOIN Products
ON Orders.ProductID = Products.ProductID
WHERE Orders.ProductID IS NOT NULL;
```
三、LEFT JOIN
LEFT JOIN也称为左连接,它返回左表中的所有行,以及右表中满足连接条件的行。如果右表中没有匹配的行,则返回NULL值。以下是LEFT JOIN的几种常见用法:
1. 查询订单表和客户表,返回订单表中所有的订单号、客户姓名和订单日期,如果客户表中没有对应的客户,则返回NULL值:
```sql
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
LEFT JOIN Customers
ON Orders.CustomerID = Customers.CustomerID;
```
2. 查询订单表和产品表,返回订单表中所有的订单号、产品名称和产品价格,如果产品表中没有对应的产品,则返回NULL值:
```sql
SELECT Orders.OrderID, Products.ProductName, Products.Price
FROM Orders
LEFT JOIN Products
ON Orders.ProductID = Products.ProductID;
```
3. 查询订单表和客户表,返回订单表中所有的订单号、客户姓名和订单日期,如果客户表中没有对应的客户,则返回NULL值,但只包括客户表中存在的客户:
```sql
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
LEFT JOIN Customers
ON Orders.CustomerID = Customers.CustomerID
WHERE Customers.CustomerID IS NOT NULL;
```
4. 查询订单表和产品表,返回订单表中所有的订单号、产品名称和产品价格,如果产品表中没有对应的产品,则返回NULL值,但只包括产品表中存在的产品:
```sql
SELECT Orders.OrderID, Products.ProductName, Products.Price
FROM Orders
LEFT JOIN Products
ON Orders.ProductID = Products.ProductID
WHERE Products.ProductID IS NOT NULL;
```
5. 查询订单表和产品表,返回订单表中所有的订单号、产品名称和产品价格,如果订单表中没有对应的订单,则返回NULL值,但只包括订单表中存在的订单:
```sql
SELECT Orders.OrderID, Products.ProductName, Products.Price
FROM Orders
LEFT JOIN Products