IN 有多列是可能的吗?
IN with more than one column is possible?
我有这个SQL
Select A, B, D from T
Where not exists (select F, S from Z)
我可以对多列使用 NOT IN
做同样的事情吗?
一些数据库(例如 postgresql)支持行值,您可以在其中执行类似 ROW(x, y) NOT IN (select f, s from z)
的操作,不幸的是,Firebird 没有行值,因此您不能在一个 [=12] 中有超过一列=](或NOT IN
)。
但是你通常可以用存在的相关子查询来模拟它,例如:
SELECT A, B, D
FROM T
WHERE NOT EXISTS (
SELECT 1
FROM Z
WHERE Z.F = T.X AND Z.S = T.Y
)
请注意,EXISTS
不关心 selected 值,只关心生成的一行或多行,因此您在 select 中使用的两列EXISTS
不相关(它也可以像我上面使用的那样 1
)。
我有这个SQL
Select A, B, D from T
Where not exists (select F, S from Z)
我可以对多列使用 NOT IN
做同样的事情吗?
一些数据库(例如 postgresql)支持行值,您可以在其中执行类似 ROW(x, y) NOT IN (select f, s from z)
的操作,不幸的是,Firebird 没有行值,因此您不能在一个 [=12] 中有超过一列=](或NOT IN
)。
但是你通常可以用存在的相关子查询来模拟它,例如:
SELECT A, B, D
FROM T
WHERE NOT EXISTS (
SELECT 1
FROM Z
WHERE Z.F = T.X AND Z.S = T.Y
)
请注意,EXISTS
不关心 selected 值,只关心生成的一行或多行,因此您在 select 中使用的两列EXISTS
不相关(它也可以像我上面使用的那样 1
)。