MySQL查询需求:获取CS表匹配/未匹配HC指定条件的记录(含NULL)
MySQL关联查询实现需求
现有表结构及数据
CS表
| id_m | id_cs |
|---|---|
| 1 | 12 |
| 2 | 12 |
| 3 | 12 |
| 4 | 77 |
HC表
| id_m | id_cs | idu |
|---|---|---|
| 1 | 12 | 9 |
| 2 | 12 | 9 |
| 2 | 12 | 88 |
查询需求
获取CS表中id_cs=12的所有id_m记录,关联HC表中id_cs=12且idu=9的记录,匹配到的返回对应idu值,未匹配的返回NULL,期望结果如下:
| id_m | id_cs | idu |
|---|---|---|
| 1 | 12 | 9 |
| 2 | 12 | 9 |
| 3 | 12 | NULL |
实现SQL语句
SELECT cs.id_m, cs.id_cs, hc.idu FROM CS cs LEFT JOIN HC hc ON cs.id_m = hc.id_m AND hc.id_cs = 12 AND hc.idu = 9 WHERE cs.id_cs = 12;
语句说明
- 使用
LEFT JOIN确保保留CS表中所有符合cs.id_cs=12的记录,即使HC表中没有匹配项也会返回,未匹配的idu字段显示NULL。 - 关联条件里同时指定HC表的
id_cs=12和idu=9,避免把HC表中其他不符合条件的记录关联进来。 - 最后通过
WHERE过滤出CS表中id_cs=12的记录,排除CS表中其他id_cs的数据。
内容的提问来源于stack exchange,提问作者ignacio dolcemascolo
相关产品推荐
相关产品推荐

