MySQL 将字段的空值与大小写语句进行比较



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

 --------------------------------------
| 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')
)

相关内容

  • 没有找到相关文章