Sql 返回查询中未找到的值
我正在做一个项目,我有一个几千条记录的列表,我需要检查。我需要提供未找到的列表,并提供我用来定位它们的查询,以便我的上级可以检查他们的工作 我承认我对SQL比较陌生。我没有创建临时表的权限,这是我想到的一种方法 我正在做的基本想法:Sql 返回查询中未找到的值,sql,sql-server,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008 R2,我正在做一个项目,我有一个几千条记录的列表,我需要检查。我需要提供未找到的列表,并提供我用来定位它们的查询,以便我的上级可以检查他们的工作 我承认我对SQL比较陌生。我没有创建临时表的权限,这是我想到的一种方法 我正在做的基本想法: select t.column1, t.column2 from table1 t where t.column1 in ('value1','value2','value3') 如果value1和value3在数据库中,但value2不在,则我需要显示value
select t.column1, t.column2
from table1 t
where t.column1 in ('value1','value2','value3')
如果value1和value3在数据库中,但value2不在,则我需要显示value2,而不是其他
我尝试了ISNULL
,嵌入查询,并尝试从查询中选择NOT
值
我在Google和本网站上搜索了在查询中未找到的返回记录,但仍然没有找到任何结果。解决方案可能适用于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;
我相信sqlserver相当于Oracle
从dual is中选择值1
选择value1或选择“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;
因为我不是sqlserver,所以可能是这样的人
Richard Kiwi版本的Oracle select from dual更好。我也尝试过类似的方法: 首先创建一个表,该表将包含您需要的所有此类值 比方说
create table table_values(values varchar2(30));
然后尝试以下in子句:
select * from table_values tv where tv.value not in (select t.column1
from table1 t);
这将返回所需的值。在SQL Server 2008中,您可以使用语法
values(…)(…)(…)
创建派生表,例如
select v.value
from (
values ('value1'),('value2'),('value3')
) v(value)
left join table1 t on t.column1 = v.value
where t1.column1 is null
注:
v(value)
是表的别名和列名v
中的值,即使该记录在表1中不存在t1.column1为空
v
切换到该列。列2已删除,因为它始终为空您可以在服务器上创建什么完整的表、视图、存储过程等等,。。?它是什么类型的sql?从表1 t中选择t.column1、t.column2,其中t.column1不在('value1'、'value2'、'value3')中是否适合您?如果你只有数千个条目,你可以把它们放在这样的列表中。公平地说,这是SQLServer2008R2。我应该指定我们只限于T-SQL。我只限于选择、更新、插入和删除,我不能访问存储过程(尽管我已经找到了解决方法),不能创建视图或表。在第一篇文章中,他提到没有tmp表!