如何消除SQL查询结果中的NULL值?附查询及预期结果
解决方案
你需要通过分组聚合消除NULL值,当前查询会把同一用户的手机号、邮箱拆分成两行显示,聚合函数可以将同一用户的非空数据合并到一行:
SELECT ut.username, MAX(case when FieldID = 1 then Data end) as phone, MAX(case when FieldID = 2 then Data end) as email FROM usertable ut JOIN userdata ud ON ut.ID = ud.userID GROUP BY ut.ID, ut.username;
补充说明
MAX()(或MIN())聚合函数会自动忽略NULL值,仅保留每个用户对应FieldID的有效数据- 分组时同时指定
ut.ID和ut.username,避免同名用户导致数据错误合并 - 若希望无数据时显示空字符串而非NULL,可嵌套
COALESCE()函数,示例:COALESCE(MAX(case when FieldID = 1 then Data end), '') as phone
内容的提问来源于stack exchange,提问作者Emanuele Filiberto
相关产品推荐
相关产品推荐

