gpt4 book ai didi

mysql - 如何获取两个独立表之间的数据差异(数据) - 使用sql

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

T1 和 T2 中的数据存在于多个日期的多行中,我编写了这些 sql 以获取以下数据集。

表 T1 是以下 sql 的结果:

select SYS_ID, SYS_NM 
FROM T1
WHERE dt = '30-NOV-2015'
group by SYS_ID, SYS_NM
order by 1,2;

T1
SYS_ID SYS_NM
4 MPC
4 MHL
6 FR
8 BECD
8 BCD
8 CL
8 FHLB
8 JRD

表T2是下面sql的结果

Select SYS_ID, SYS_NM FROM T2
WHERE dt = '30-NOV-2015'
and SYS_CD IN ('R103')
group by SYS_ID, SYS_NM
order by 1,2;

T2
SYS_ID SYS_NM
8 BECD
8 BCD
8 FHLB

现在我需要从 T1 获取 T2 中不存在的数据。我尝试了两种方法,但没有得到预期的结果。

Method 1:

select A.SYS_ID, A.SYS_NM
FROM T1 A
WHERE not exists
(
select B.SYS_ID, B.SYS_NM
FROM T2 B
WHERE A.SYS_ID = B.SYS_ID
and A.SYS_NM = B.SYS_NM
group by 1, 2
)
group by 1,2
order by 1,2;

方法二:

Select A.SYS_ID, A.SYS_NM FROM T1 A
LEFT JOIN T2 B
ON A.SYS_ID = B.SYS_ID
group by A.SYS_ID, A.SYS_NM
order by 1,2;

最佳答案

你很接近。试试这个:

SELECT * FROM T1 
WHERE NOT EXISTS
(SELECT * FROM T2
WHERE T2.SYS_ID = T1.SYS_ID
AND T2.SYS_NM = T1.SYS_NM)
order by 1, 2;

更新:我猜您在结果中看到了重复的行。如果是这样,添加“DISTINCT”将纠正它。

我还注意到我之前推荐的答案在 JOIN 子句中没有两列。这是完整的解决方案:

SELECT DISTINCT A.SYS_ID, A.SYS_NM 
FROM T1 A
LEFT JOIN T2 B ON A.SYS_ID = B.SYS_ID AND A.SYS_NM=B.SYS_NM
WHERE B.SYS_ID IS NULL
GROUP BY A.SYS_ID, A.SYS_NM;

关于mysql - 如何获取两个独立表之间的数据差异(数据) - 使用sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34645214/

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