SQL列表中缺少哪些值?

chx*_*chx 2 mysql sql

我有一个值列表,比方说1,2,3,4,5,6.我有一个SQL表,其中一个字段存储这些值,但只有三行,比如说2,4,5.什么样的查询会1,3,6为我返回三行?(将所有六个存储在另一个表中并且左连接是作弊.)

a_h*_*ame 5

您没有说明您的DBMS,因此这是ANSI SQL版本:

with the_values (id) as ( 
  values (1),(2),(3),(4),(5),(6)
)
select v.id 
from the_values v
  left join the_real_table t on t.id = v.id
where t.id is null;
Run Code Online (Sandbox Code Playgroud)


Tel*_*ini 3

您还可以尝试使用 EXCEPT(类似于 Oracle 中的 MINUS):

(SELECT 1
UNION
SELECT 2
UNION 
SELECT 3
UNION
SELECT 4
UNION
SELECT 5
UNION
SELECT 6)
EXCEPT
(SELECT 2
 UNION
 SELECT 3
 UNION
 SELECT 4)
Run Code Online (Sandbox Code Playgroud)

或者,与您的示例更相关:

(SELECT 1
UNION
SELECT 2
UNION 
SELECT 3
UNION
SELECT 4
UNION
SELECT 5
UNION
SELECT 6)
EXCEPT
(SELECT Field FROM Table)        
Run Code Online (Sandbox Code Playgroud)

其中 Field 包含 2、4 和 5。