Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Not in In SQL statement?

I have set of ids in excel around 5000 and in the table I have ids around 30000. If I use 'In' condition in SQL statment I am getting around 4300 ids from what ever I have ids in Excel. But If I use 'Not In' with Excel id. I have getting around 25000+ records. I just to find out I am missing with Excel ids in the table.

How to write sql for this?

Example: Excel Ids are

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

Table has IDs

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

Now I want get 5,7,10 values from Excel which missing the table?

Update:

What I am doing is

SELECT  [GLID]      
  FROM [tbl_Detail] 
  where datasource = 'China' and  ap_ID  not in (5206896,
5206897,
5206898,
5206899,
5117083,
5143565,
5173361,
5179096,
5179097,
5179150)
like image 510
James123 Avatar asked Apr 12 '12 21:04

James123


People also ask

What is not in in SQL?

SQL NOT IN operator is used to filter the result if the values that are mentioned as part of the IN operator is not satisfied. Let's discuss in detail about SQL NOT IN operator. Syntax: SELECT Column(s) FROM table_name WHERE Column NOT IN (value1, value2...

Why do we use not in in SQL?

The SQL NOT operator NOT is a logical operator in SQL that you can put before any conditional statement to select rows for which that statement is false. In the above case, you can see that results for which year_rank is equal to 2 or 3 are not included. NOT is commonly used with LIKE .

What is not in operator?

What Does NOT Operator Mean? In Boolean algebra, the NOT operator is a Boolean operator that returns TRUE or 1 when the operand is FALSE or 0, and returns FALSE or 0 when the operand is TRUE or 1. Essentially, the operator reverses the logical value associated with the expression on which it operates.

Is != And <> same in SQL?

If != and <> both are the same, which one should be used in SQL queries? Here is the answer – You can use either != or <> both in your queries as both technically same but I prefer to use <> as that is SQL-92 standard.


2 Answers

Try this:

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

Here's an SQL Fiddle to try this: sqlfiddle.com/#!6/31af5/14

like image 54
Leniel Maccaferri Avatar answered Nov 10 '22 12:11

Leniel Maccaferri


You're probably looking for EXCEPT:

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

Edit:

Except will

  • treat NULL differently(NULL values are matching)
  • apply DISTINCT

unlike NOT IN

Here's your sample data:

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);
like image 27
Tim Schmelter Avatar answered Nov 10 '22 12:11

Tim Schmelter