LEFT JOIN未返回左表全部行?SQL查询问题求助
问题原因及修正方案
你的错误出在SELECT子句里选择了t1.key而非t2.key。
因为你用的是LEFT JOIN(左连接),逻辑是保留左表(table2)的所有行,右表(table1)中没有匹配的行,其所有字段都会返回NULL。当t2里的key为B时,t1中没有对应的行,所以t1.key的值是NULL,而你要的是t2里的B,所以必须选择t2.key才能保留这个值。
修正后的SQL语句如下:
SELECT t2.key, t1.results AS result FROM table2 t2 LEFT JOIN table1 t1 ON t2.key = t1.key
执行后就能得到你期望的结果:
| key | result |
|---|---|
| A | 2 |
| B | NULL |
(注:不同数据库对空值的显示可能不同,比如部分工具会显示为NA,本质和NULL是同一个意思)
内容的提问来源于stack exchange,提问作者curious
相关产品推荐
相关产品推荐

