SELECT,返回表中不存在的值列表

问题描述 投票:0回答:2

查询:

select id from users where id in (1,2,3,4,5)

如果users表包含id 1,2,3,则返回1,2和3.我想要一个返回4和5的查询。换句话说,我不希望查询返回任何存在的行在表格中,我想给它一个数字列表,并从该列表中获取未出现在表格中的值。

sql oracle
2个回答
1
投票

您将不得不使用MINUS运算符。您也可以将其与odcinumberlist一起使用,而无需将值存储在临时表中

SELECT column_value
FROM table(sys.odcinumberlist(1,2,3,4,5)) 
MINUS
SELECT ids
FROM users;

1
投票

首先,您需要将您的数字列表表示为关系(可能不完全是Oracle文档将使用的术语,但......)

VALUES 1,2,3,4,5

然后,您可以通过多种方式在查询中使用它

SELECT *
 FROM (VALUES 1,2,3,4,5) as V(A)
WHERE A NOT IN ( -- query your table here
                   )

要么

SELECT *
  FROM (VALUES 1,2,3,4,5) as V(A)
     LEFT JOIN -- your table
        ON V.A = table.column
 WHERE table.column is NULL

要么

VALUES 1,2,3,4,5
 MINUS
 -- query your table

我不是安装了ORacle的计算机,所以这些中的任何一个都可能有点关闭语法,但想法是......

© www.soinside.com 2019 - 2024. All rights reserved.