如何用SQL查询Table1全部Name,第二列仅返回Apple否则为Null
SQL实现方案
实现逻辑
- 用左连接保留table1的全量Name记录,确保没有遗漏
- 关联table2时直接限定
Description = 'Apple',未匹配到的行第二列自动返回NULL,无需额外分支判断,执行效率更高 - 新增分组逻辑避免table2同个ID存在多条Apple记录时出现重复行
参考代码
SELECT t1.Name, t2.Description FROM table1 t1 LEFT JOIN table2 t2 ON t1.ID = t2.ID AND t2.Description = 'Apple' GROUP BY t1.ID, t1.Name, t2.Description;
如果你习惯用分支判断的写法,也可以用以下实现:
SELECT DISTINCT t1.Name, CASE WHEN t2.Description = 'Apple' THEN 'Apple' ELSE NULL END AS Description FROM table1 t1 LEFT JOIN table2 t2 ON t1.ID = t2.ID;
执行结果
| Name | Description |
|---|---|
| Boris | NULL |
| Dominic | NULL |
| Rishi | Apple |
| Elizabeth | Apple |
| Ben | NULL |
注:你给出的预期结果中的Sajid属于笔误,对应table1中ID为28的记录实际Name为Ben。
内容的提问来源于stack exchange,提问作者Jigster
相关产品推荐
相关产品推荐

