首页 > 解决方案 > 如何比较同一个表中的两个字段以查看它们是否匹配,不匹配,或者在 SQL 中使用 Group By 时两者都为 NULL?

问题描述

我有一个包含以下内容的表:

Team            ID             
--              --
AB             100001
DC             100001
DC             100032
AB             100021
AB             100032
AB             100044
DC             100044
DC             100323

我想看看每个团队的 ID 值是一致的(AB 和 DC 都存在相同的 ID)。由于 TEAM AB 的大小为 100 万,TEAM DC 的大小为 50k,将会出现一些 NULL/不匹配。

我试过了,但没有另一个字段 ID 可以比较

SELECT Team, ID FROM Table
WHERE ID IN
(
SELECT ID FROM Table
)

我想要的输出是一个新表,其中显示了“团队”和“ID”字段以及显示它们是否匹配的第三列。

AB         DC           MATCH
--         --            --
100001     100001       TRUE
100032     100032       TRUE
100044     100044       TRUE
100021     100323       FALSE

标签: sqlgroup-bysubquerysnowflake-cloud-data-platform

解决方案


显然你想要一个完整的外部连接:

with data as  (
    select 'ab' team, 100 id
    union all select 'ab', 101
    union all select 'ab', 102
    union all select 'cd', 102
    union all select 'cd', 101
    union all select 'cd', 105
)

select a.id ab, b.id cd, ifnull(a.id=b.id, false) match
from (select team, id from data where team='ab') a
full outer join (select team, id from data where team='cd') b
on a.id=b.id

在此处输入图像描述


推荐阅读