起始的两张表结构是这样的。
| 水果 | 颜色 |
|---|---|
| 苹果 | Red |
| 橙子 | Orange |
| 火龙果 |
| 颜色 | 含义 |
|---|---|
| Red | 红色 |
| Orange | 黄色 |
| 粉色 | |
| 紫色 |
要求的结果集:
| 水果 | 颜色 |
|---|---|
| 苹果 | 红色 |
| 橙子 | 黄色 |
| 火龙果 |
乍眼看上去是否很简单呢?
select * from 水果表 a left join 颜色表 b on a.颜色=b.颜色
那你就错了。因为这条语句的结果集肯定如下表:
| 颜色 | 含义 |
|---|---|
| 苹果 | 红色 |
| 橙子 | 黄色 |
| 火龙果 | 粉色 |
| 火龙果 | 紫色 |
所以正确的,应该是下这条SQL语句
select * from 水果表 a left join(select * from 颜色表 where 颜色!='') b on a.颜色=b.颜色
好久没写SQL,都忘得差不多了。今天记录一下,自己真笨哈
本文通过一个具体的例子展示了如何正确地使用SQL的左连接来获取预期的结果集,避免因空值匹配导致的数据冗余。

被折叠的 条评论
为什么被折叠?



