根据两个表T-SQL选择不同的行

时间:2012-09-06 09:32:51

标签: sql-server-2008 tsql

考虑图像中的表格

  

enter image description here

如何从Table1中选择行,不包括Table2中具有相同ReferenceId的项目?

结果应为

  

enter image description here

5 个答案:

答案 0 :(得分:3)

您可以使用以下内容:

SELECT  Id
        ,ReferenceId
FROM    Table1
WHERE   ReferenceId NOT IN (SELECT DISTINCT ReferenceId FROM Table2);

答案 1 :(得分:3)

您可以使用LEFT OUTER连接在ReferenceId上加入表,并将返回值限制为Table2上ReferenceId为NULL的位置。

SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.ReferenceId = Table2.ReferenceId
WHERE Table2.ReferenceId IS NULL

答案 2 :(得分:3)

  

如何从Table1中选择行,不包括Table2中具有相同ReferenceId的项目?

然后按ReferenceId

排除t2.ReferenceId <> t1.ReferenceId
SELECT t1.id, t1.ReferenceID FROM t1 
INNER JOIN t2 ON t1.id = t2.id
WHERE t2.ReferenceID <>  t1.ReferenceID;

See this SQLFiddle

答案 3 :(得分:1)

SELECT table1.id, table1.ReferenceID from table1 
     inner join table2 on table1.id = table2.id
EXCEPT
SELECT id, ReferenceID from table2

答案 4 :(得分:0)

使用条件

查询
SELECT *
FROM Table1 t1
 JOIN Table2 t2 on t1.Id = t2.Id
    AND t1.Id <> t1.ReferenceId