并非在SQL语句中?(Not in In SQL statement?)

2019-07-28 22:41发布

我曾经在Excel中设置IDS 5000左右,并在表中我有大约30000 ID如果我使用“在”在SQL statment条件,我让周围4300 IDS从什么都我有ID在Excel中。 但是如果我使用“不在”与Excel ID。 我曾经让周围25000+记录。 我找出我与表中的Excel IDS失踪。

如何写sql这个?

例如:Excel的ID是

 1,
 2,
 3,
 4,
 5,
 6,
 7,
 8,
 9,
10,

表有标识

 1,
 2,
 3,
 4,
 6,
 8,
 9,
11,
12,
14,
15

现在我想获得5,7,10从Excel哪个丢失表中的值?

更新:

什么我做的是

SELECT  [GLID]      
  FROM [tbl_Detail] 
  where datasource = 'China' and  ap_ID  not in (5206896,
5206897,
5206898,
5206899,
5117083,
5143565,
5173361,
5179096,
5179097,
5179150)

Answer 1:

你可能寻找EXCEPT

SELECT Value 
FROM @Excel 
EXCEPT
SELECT Value 
FROM @Table;

编辑

Except意志

  • 对待不同的空(NULL值匹配)
  • 适用DISTINCT

不同于NOT IN

这是你的样本数据:

declare @Excel Table(Value int);
INSERT INTO @Excel VALUES(1);
INSERT INTO @Excel VALUES(2);
INSERT INTO @Excel VALUES(3);
INSERT INTO @Excel VALUES(4);
INSERT INTO @Excel VALUES(5);
INSERT INTO @Excel VALUES(6);
INSERT INTO @Excel VALUES(7);
INSERT INTO @Excel VALUES(8);
INSERT INTO @Excel VALUES(9);
INSERT INTO @Excel VALUES(10);

declare @Table Table(Value int);
INSERT INTO @Table VALUES(1);
INSERT INTO @Table VALUES(2);
INSERT INTO @Table VALUES(3);
INSERT INTO @Table VALUES(4);
INSERT INTO @Table VALUES(6);
INSERT INTO @Table VALUES(8);
INSERT INTO @Table VALUES(9);
INSERT INTO @Table VALUES(11);
INSERT INTO @Table VALUES(12);
INSERT INTO @Table VALUES(14);
INSERT INTO @Table VALUES(15);


Answer 2:

试试这个:

SELECT    tableExcel.ID
FROM      tableExcel
WHERE     tableExcel.ID NOT IN(SELECT anotherTable.ID FROM anotherTable)

下面是一个SQL小提琴试试这个: sqlfiddle.com/#!6/31af5/14



Answer 3:

导入Excel文件到使用SQL Server Management Studio中发现导入数据向导的SQL Server。

然后,你可以写下面的查询发现这是在该文件,但没有在表中的任何标识:

SELECT id     
FROM imported_table
WHERE id NOT IN (SELECT id FROM db_table)


Answer 4:

你应该将Excel数据在SQL Server中的表,然后做在SQL Server查询。

  select distinct id from Excel where id not in (select your ids from Sqltable)

(显然选择IDS从SQLTABLE是一种选择,它返回现有的SQL Server上的ID)。

你可能认为将数据移动到SQL Server是很难做到的,但是,相反,它很容易:

1)创建一个表

  CREATE TABLE ExcelIds (Id int)

2)在Excel中添加新的柱,用下式:

  ="insert into ExcelIds values(" & XX & ")"

其中XX是在与Excel ID的列中的参考单元。

3)从Excel中的“插入”复制到SSMS或任何工具,你在SQL Server中全光照,并执行它们。

现在,你必须在SQL Server 2台,使查询它是绝对简单。

当你过,只是删除表

DROP TABLE ExcelIds

注:因为我想,这些ID可重复我没有创建的SQL Server表中的关键字。 无论是有道理的,以创建更复杂的SQL查询,以避免在ExcelIds为此特设的解决方案重复。



文章来源: Not in In SQL statement?