gpt4 book ai didi

MySQL 比较字段的空值与 case 语句

转载 作者:行者123 更新时间:2023-11-28 23:35:43 25 4
gpt4 key购买 nike

我有两个简单、相似的表,其中包含有关公司员工层次结构(用户及其上级)的数据,我想找出它们之间的差异。基本上,它们看起来有点像这样:

 --------------------------------------
| hierarchy_id | user_id | superior_id |
--------------------------------------

一切正常,直到其中一个字段为空而匹配表中的另一个字段为空。比较返回 NULL

非常感谢任何帮助。

我的查询:

SELECT
t1.user_id,
t1.superior_id AS superior_1,
t2.superior_id AS superior_2,
CASE
WHEN t1.superior_id = t2.superior_id
THEN ''
ELSE
concat(
t1.superior_id,
' != ',
t2.superior_id
)
END AS match_result
FROM
dat_hierarchy_01 t1
INNER JOIN dat_hierarchy_02 t2 ON t2.hierarchy_id = t1.hierarchy_id
WHERE
t1.superior_id != t2.superior_id
OR (
t1.superior_id IS NULL
AND t2.superior_id IS NOT NULL
)
OR (
t2.superior_id IS NULL
AND t1.superior_id IS NOT NULL
)

最佳答案

在连接中使用 coalesce() 函数或 ifnull() 函数来处理这种情况:

concat(
coalesce(t1.superior_id,'null'),
' != ',
coalesce(t2.superior_id,'null')
)

关于MySQL 比较字段的空值与 case 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35817084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com