使用订单ID 连接两表后,左表订单表为主表时,a01 项1 行,a02 项1 行,a03 项2 行,共4 行连接结果。
为了解决这个问题,我们首先需要理解左连接(LEFT JOIN)的工作原理。左连接会返回左表中的所有记录,即使右表中没有匹配的记录。对于没有匹配的记录,右表的字段会显示为NULL。
首先,我们来看订单表(表2-5)和订单详情表(表2-6)的内容:
表2-5(订单表):
| 订单ID | 用户ID | 订单日期 |
|--------|--------|----------|
| 1 | 1001 | 2023-01-01|
| 2 | 1002 | 2023-01-02|
| 3 | 1003 | 2023-01-03|
| 4 | 1004 | 2023-01-04|
表2-6(订单详情表):
| 详情ID | 订单ID | 商品ID | 数量 |
|--------|--------|--------|------|
| 1 | 1 | A | 2 |
| 2 | 1 | B | 1 |
| 3 | 2 | A | 3 |
| 4 | 3 | C | 1 |
| 5 | 5 | D | 1 |
我们进行左连接查询:
```sql
SELECT *
FROM 表2-5 AS 订单表
LEFT JOIN 表2-6 AS 订单详情表
ON 订单表.订单ID = 订单详情表.订单ID;
```
根据左连接的定义,结果将包含所有来自订单表的记录,以及匹配的订单详情表的记录。
连接后的结果如下:
| 订单ID | 用户ID | 订单日期 | 详情ID | 商品ID | 数量 |
|--------|--------|----------|--------|--------|------|
| 1 | 1001 | 2023-01-01| 1 | A | 2 |
| 1 | 1001 | 2023-01-01| 2 | B | 1 |
| 2 | 1002 | 2023-01-02| 3 | A | 3 |
| 3 | 1003 | 2023-01-03| 4 | C | 1 |
| 4 | 1004 | 2023-01-04| NULL | NULL | NULL |
在这个结果集中,总行数为5行。因此,正确答案是A: 5。