在查询中返回未找到的值

Jes*_* KC 5 sql sql-server sql-server-2008-r2

我正在研究一个项目,我有一个需要检查的数千条记录的列表.我需要提供未找到的列表,并提供我用来查找它们的查询,以便我的上级可以检查他们的工作.

我承认我对SQL比较新.我无权创建临时表,这是我想到的一种方法.

我正在做的基本想法:

select t.column1, t.column2
from table1 t
where t.column1 in ('value1','value2','value3')
Run Code Online (Sandbox Code Playgroud)

如果value1和value3在数据库中,但value2不在,我需要显示value2而不是其他.

我试过ISNULL,嵌入查询,并尝试NOT从查询中选择值.

我搜索了在Google和此网站上的查询中找不到的返回记录,但仍未找到任何内容.

elr*_*ado 1

解决方案可能适用于 Oracle,其中 Dual 是单行单列表。您需要一张表,可以在其中虚拟选择所需的值!

警告,因为我无权访问数据库,所以我从未测试过下面的查询。

SELECT tab_all.col_search, t.column1, t.column2
FROM
(
   Select value1 AS col_search from dual
   union all
   Select value2 from dual
   union all
   Select value3 from dual
) tab_all left join  table1 t
on col_search = t.column1
WHERE t.column1 is null;
Run Code Online (Sandbox Code Playgroud)

我相信 sqlserver 相当于 Oracle 的 SELECT value1 FROM Dual 是 SELECT value1 OR SELECT 'value1'。

所以尝试一下

SELECT tab_all.col_search, t.column1, t.column2
FROM
(
   Select value1 AS col_search
   union all
   Select value2 AS col_search
   union all
   Select value3 AS col_search
) tab_all left join  table1 t
on col_search = t.column1
WHERE t.column1 is null;
Run Code Online (Sandbox Code Playgroud)

由于我不是sqlserver人,可能RichardTheKiwi版本的Oracle的select from Dual更好。