gpt4 book ai didi

mysql - 根据 2 个表提取数据,其中记录在 1 个或多个字段上不匹配

转载 作者:行者123 更新时间:2023-11-29 05:48:45 25 4
gpt4 key购买 nike

我现在正在尝试从 2 个不同的表中提取数据,这些表在 1 个或多个字段中不匹配相同的记录

TABLE 1
----------------------------------
ID NAME MEMBER SMS_MEMBER
1 JOHN YES NO
2 JOY 'NO' NO
3 SMITH NO 'YES'
4 ANDRES YES YES
5 JIMMY NO YES


TABLE 2
----------------------------------
ID NAME MEMBER SMS_MEMBER
1 JOHN YES NO
2 JOY 'YES' NO
3 SMITH NO 'NO'
4 ANDRES YES YES
5 JIMMY NO YES

这是我的逻辑查询

SELECT * FROM TABLE1
WHERE
TABLE1.ID NOT IN TABLE2.ID
OR
TABLE1.NAME NOT IN TABLE2.NAME
OR
TABLE1.EMAIL_MEMBER NOT IN TABLE2.EMAIL_MEMBER
OR
TABLE1.SMS_MEMBER NOT IN TABLE2.SMS_MEMBER;

提取的记录将是

----------------------------------
ID NAME MEMBER SMS_MEMBER
2 JOY 'NO' NO
3 SMITH NO 'YES'

由于下面的记录被匹配,它将被排除在查询后的最终提取中

排除记录

ID          NAME            MEMBER          SMS_MEMBER
1 JOHN YES NO
4 ANDRES YES YES
5 JIMMY NO YES

如果你们也能帮助我,那就太好了,谢谢。

最佳答案

一种简单的方法是使用聚合。假设两个表中都没有重复项:

select id, name, member, sms_member
from ((select id, name, member, sms_member
from table1
) union all
(select id, name, member, sms_member
from table2
)
) t
group by id, name, member, sms_member
having count(*) = 1;

但是,您的示例数据表明您只需要 table2 中不在 table1 中的行。如果是这样,我建议 not exists:

select t2.*
from table2 t2
where not exists (select 1
from table1 t1
where t1.id = t2.id and t1.name = t2.name and t1.member = t2.member an t1.sms_member = t2.sms_member
);

如果 NULL 值在任何列中都是可能的,则需要调整逻辑。

关于mysql - 根据 2 个表提取数据,其中记录在 1 个或多个字段上不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56837161/

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