比较两个表并给出不同的行

时间:2015-06-23 09:47:18

标签: sql sql-server sql-server-2008

我有两张桌子。表中有两列共同的列。表1是父表,表2是主表的子集。我想获得他们没有共同的行。

前:

  • 表1:a,b,c,d
  • 表2:c

预期结果:a,b,d

5 个答案:

答案 0 :(得分:1)

这样可以得到你想要的东西。

SELECT t1.val
FROM table1 t1, table2 t2
WHERE t1.val != t2.val

输出:

val
a
b
d

SQL小提琴:http://sqlfiddle.com/#!3/97610/2/0

答案 1 :(得分:1)

尝试此解决方案,您不需要任何额外的普通查询

SELECT tab1.val
FROM table1 tab1, table2 Tab2
WHERE tab1.FieldName <> tab2.FieldName

答案 2 :(得分:1)

如果您的DBMS支持MINUS声明,您可以使用:

SELECT COL1
FROM TABLE1
MINUS
SELECT COL1
FROM TABLE2

请注意,减号是位置。你不会在切换两个SELECT语句时获得相同的结果。

答案 3 :(得分:0)

Select    X.ID   
From    Table1    X    
Right    Join    Table2    Y    ON    (X.ID =  Y.ID) 
Where     Y.ID   IS     NULL  

Table1和Table2有两个表,其中参考列为ID。上面的查询显示了表1中显示不匹配ID的输出。

答案 4 :(得分:0)

试试这个.... 将c作为共同栏目......

SELECT * 
FROM Table1
WHERE c NOT IN
(SELECT c FROM Table2);