SQL - 剩余/不属于

SQL - remainder / not belonging

我是 运行 一个 SQL 查询,其 while 约束包含一些 "id's"。 例如:

SELECT table.id
FROM TableOne table
WHERE table.id IN (1, 2, 3, 4)
AND some conditions

如果满足某些条件,查询可能 return [1, 2]。我将如何处理 returning [3, 4],即所有不满足条件但仍然是我要包含的列表的一部分的 ID?

谢谢

您可以使用您的 ID 列表创建一个 table,然后根据您的查询执行 EXCEPT

SELECT ID FROM
(
SELECT 1 ID
UNION ALL SELECT 2 
UNION ALL SELECT 3 
UNION ALL SELECT 4
)List
EXCEPT
SELECT table.id
FROM TableOne table
WHERE table.id IN (1, 2, 3, 4)
AND some conditions

假设:如果您的table不包含查询中列出的ID,下面的查询仍然return那个id.

如果这是您获得要包含并满足条件的 ID 结果的方式

SELECT table.id
FROM TableOne table
WHERE table.id IN (1, 2, 3, 4)
AND some conditions

然后,这是如何获取要包含但不满足条件的 ID 结果

SELECT table.id
FROM TableOne table
WHERE table.id IN (1, 2, 3, 4)
AND NOT (some conditions)
SELECT table.id
FROM TableOne table
WHERE table.id IN (1, 2, 3, 4)
AND NOT some conditions

它应该return你的结果