如何从表1和表2中获取不常见的值

时间:2016-12-31 16:24:51

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

我只想从表2中检索不是与表2相关的常见值,如下图所示。
如何显示不常见的值,如下图所示
这是我正在使用的查询,但它没有显示我预期的结果

select * from t1.* from Table1 t1 inner join Table2 t2 on t1.Name <> t2.Name

enter image description here

4 个答案:

答案 0 :(得分:1)

SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
WHERE TableA.id IS null
OR TableB.id IS null

在外连接的情况下,在其他行中不存在非常见行,在每行中生成NULL字段。我们基本上就是这样选择的。

答案 1 :(得分:0)

使用ExceptUnion All。不确定为什么"SQL 2K12"在结果中,因为它存在于两个表中

select col from table1 
except
select col from table2
Union all
select col from table2 
except
select col from table1

答案 2 :(得分:0)

另一个选择

Select col 
 From (
        Select col from Table1
        Union All
        Select col from Table2
      ) A
 Group By col
 Having count(*)=1

答案 3 :(得分:0)

这是根据你的例子

SELECT *  -- or SELECT COALESCE(t1.Name,t2.Name) As Name
FROM
    Table1 t1
    FULL OUTER JOIN Table2 t2 ON t1.Name = t2.Name
WHERE
    t1.Name IS NULL OR t2.Name IS NULL;

如果两个表中只有一列(或两个表具有相同的列),并且您不希望重复这些列

SELECT *
FROM
    Table1   
UNION 
SELECT *
FROM
    Table2

EXCEPT
(
SELECT *
FROM
    Table1
INTERSECT
SELECT *
FROM
    Table2
)