gpt4 book ai didi

sql - 检查表1中的字段组合是否存在于另一个表2中(SQL)

转载 作者:行者123 更新时间:2023-12-03 18:15:59 24 4
gpt4 key购买 nike

我需要检查表 A 中的值组合是否存在于不同表 B 中指定的相应列集。

到目前为止,我正在这样做,这似乎不是很优雅或高效:

select * from table1 where 
colX_table_1 NOT IN (select colX_table_2 from table2)
and
colY_table_1 NOT IN (select colY_table_2 from table2)

有没有更好/更快的方法来进行这种组合检查 (colX_table_1,colY_table_1) -> (colX_table_2,colY_table_2)?

最佳答案

您给出的查询分别评估每个字段:

select * from table1 where 
colX_table_1 NOT IN (select colX_table_2 from table2)
and
colY_table_1 NOT IN (select colY_table_2 from table2)

正如您声称的那样,这不仅不优雅,而且是错误的,因为它不强制组合。例如,请考虑以下表格:
table1:
------
colX colY
1 1

table2:
------
colX colY
1 2
2 1

根据您的帖子,您正在寻找一个可以返回 table1 中的行的查询,因为 table2 中不存在这种组合。但是,在给定的查询中, where 的每个部分子句计算为 false ,并且不返回该行。

相反,为了检查组合而不是单独检查每一列,您可以使用 exists健康)状况:
SELECT *
FROM table1
WHERE NOT EXISTS (SELECT *
FROM table2
WHERE table1.colx = table2.colx AND
table1.coly = table2.coly)

关于sql - 检查表1中的字段组合是否存在于另一个表2中(SQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22026633/

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