我正在使用“' in'在oracle 11g中有大约500条记录的子句,有没有办法从'中获取记录。表中没有值的子句。
示例:
查询:
从表中选择*,其中包含名称 (' NICK'' TOM'' LUCY'' HARRY'' RAFEL&#39);
样本表:
在上表中,记录了' TOM',' HARRY'' RAFEL'表中没有出现在子句中,所以输出应该是:
TOM
HARRY
RAFEL
答案 0 :(得分:3)
您可以使用您要查找的值声明一个集合,然后使用您的参照表执行连接以搜索不匹配的记录:
with cte_in as (
select 'NICK' nickname from dual
union all select 'TOM' from dual
union all select 'LUCY' from dual
union all select 'HARRY' from dual
union all select 'RAFEL' from dual
)
SELECT nickname
FROM cte_in cte
LEFT JOIN mytable mt
ON cte.nickname = mt.NAME
WHERE mt.NAME IS NULL
其他解决方案正在使用MINUS
SELECT nickname
FROM cte_in
minus
select name
from mytable
编辑:另一种接近IN
格式
WITH cte_in
AS ( SELECT ( column_value ).getstringval() nickname
FROM XMLTABLE('"NICK","TOM","LUCY","HARRY","RAFEL"') )
SELECT *
FROM cte_in
minus
SELECT NAME
FROM mytable;