我有一个值列表,比方说1,2,3,4,5,6.我有一个SQL表,其中一个字段存储这些值,但只有三行,比如说2,4,5.什么样的查询会1,3,6为我返回三行?(将所有六个存储在另一个表中并且左连接是作弊.)
您没有说明您的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)
您还可以尝试使用 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。
| 归档时间: |
|
| 查看次数: |
7900 次 |
| 最近记录: |