我有两个简单、相似的表格,其中包含有关公司员工层次结构(用户及其上级)的数据,我想找出它们之间的差异。基本上,它们看起来有点像这样:
--------------------------------------
| hierarchy_id | user_id | superior_id |
--------------------------------------
一切正常,直到其中一个字段为 null,而匹配表中的另一个字段不为空。 比较返回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')
)