gpt4 book ai didi

sql - 多列的SQL“IN”语句

转载 作者:行者123 更新时间:2023-12-04 21:05:08 25 4
gpt4 key购买 nike

我想过滤永不X = Y的Name,X组合
让我们假设下表:

*Name*     *X*      *Y*
A 2 1
A 2 2 <--- fulfills requirement for Name=A, X=2
A 10 1
A 10 2
B 3 1
B 3 3 <--- fulfills requirement for Name=B, X=3
B 1 1 <--- fulfills requirement for Name=B, X=1
B 1 3


因此,我想返回名称= A,X = 10的组合,其中X = Y永远都不是真实的。
这是我的方法(在语法上不正确)

SELECT * 
FROM TABLE
WHERE NAME
, X NOT IN (SELECT DISTINCT NAME
, X
FROM TABLE
WHERE X=Y)


我的问题是无法处理多列的where语句。有谁知道如何做到这一点?

最佳答案

只需将列放在括号中

SELECT * 
FROM TABLE
WHERE (NAME, X) NOT IN (SELECT NAME, X
FROM TABLE WHERE X=Y);


上面是ANSI标准SQL,但并非所有DBMS都支持此语法。

对于 distinctIN的子查询,不需要 NOT IN

但是,带有关联查询的 NOT EXISTS通常比 NOT IN条件要快。

关于sql - 多列的SQL“IN”语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24733328/

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