为何在data.stackexchange查询中,Location空字符串GROUP BY后占两行?
为何Data Stack Exchange查询中空字符串Location会出现两行?
你的查询代码如下:
SELECT SUM(Reputation) AS rep, Location FROM Users GROUP BY Location ORDER BY rep DESC
出现两行“空Location”的核心原因是:SQL里的NULL值和空字符串''是完全不同的两类取值。
- 空字符串
''是明确的、没有内容的字符串值; NULL代表的是“未知、未填写或不存在的值”。
当执行GROUP BY Location时,数据库会把这两种情况视为独立的分组,分别统计它们的Reputation总和。只是在结果展示时,这两个分组的Location列都会显示为空,看起来像是重复的两行。
如果要区分这两种情况,可以修改查询来明确标注:
SELECT SUM(Reputation) AS rep, CASE WHEN Location IS NULL THEN '【NULL值】' WHEN Location = '' THEN '【空字符串】' ELSE Location END AS Location_Type FROM Users GROUP BY Location_Type ORDER BY rep DESC
这样就能清晰看到这是两个不同的分组,而不是同一个空值重复出现。
内容的提问来源于stack exchange,提问作者hanshenrik
相关产品推荐
相关产品推荐

