使用Oracle我需要从IN条件查询它并为动态查询创建排除NOT IN条件。
示例:
Select *
from tbl_namw
where number in (1,2,3,4,5,6)
and number not in select number from tbl_number where number in (2,3)
在上面的查询中不排除值。
任何人都可以帮我吗?
答案 0 :(得分:0)
您正在寻找类似的东西:
SELECT * FROM Users WHERE CITY IN ('Paris','London','Lille','Mumbai')
AND CITY NOT IN ('Lille','London');
而不是您的查询翻译为:
SELECT * FROM Users WHERE City IN ('Paris','London','Lille') AND CITY
NOT IN (SELECT CITY FROM Users WHERE CITY IN ('Lille','London'));
它们都提供您需要的相同输出,第一个更简洁。
答案 1 :(得分:0)
您可以执行帖子中列出的内容,但语法错误。子查询周围需要括号:
SELECT * FROM tbl_namw
WHERE number IN (1,2,3,4,5,6)
AND number NOT IN ( SELECT number FROM tbl_number WHERE number IN (2,3) );
但是,我不确定我是否真的理解使用子查询的目的。为什么不执行以下操作,并了解IN
子句中的数字是动态的,而NOT IN
中的数字是您要排除的数字?
SELECT * FROM tbl_namw
WHERE number IN (1,2,3,4,5,6) -- dynamic list
AND number NOT IN (2,3);