SQL Server减去查询给出了问题?

时间:2017-12-21 01:23:45

标签: sql sql-server

我正在尝试比较两个表的差异值(我怀疑两个 TankSystemIds 包含相同的数据)

我的查询是

SELECT * 
FROM [dbo].[vwRawSaleTransaction] 
WHERE hdTankSystemId = 2782

MINUS

SELECT *
FROM [dbo].[vwRawSaleTransaction] 
WHERE hdTankSystemId = 2380

但是我收到有关语法问题的错误:

  

'minus'

附近的语法不正确

但这是对的[1]? [1] https://www.techonthenet.com/sql/minus.php

1 个答案:

答案 0 :(得分:1)

引用链接。

  

对于SQL Server,PostgreSQL和SQLite等数据库,请使用EXCEPT运算符执行此类查询。

对于您的情况,似乎您正在寻找重复数据,应该使用相交。

此外,INTERSECT语句如

SELECT
    EXPRESSION_1, EXPRESSION_2, ..., EXPRESSION_N
FROM
    TABLE_A
INTERSECT
SELECT
    EXPRESSION_1, EXPRESSION_2, ..., EXPRESSION_N
FROM
    TABLE_B

可以写成

SELECT 
    TABLE_A.EXPRESSION_1, TABLE_A.EXPRESSION_2, ..., TABLE_A.EXPRESSION_N
FROM
    TABLE_A
INNER JOIN
    TABLE_B
ON
    TABLE_A.EXPRESSION_1 = TABLE_B.EXPRESSION_1
AND TABLE_A.EXPRESSION_2 = TABLE_B.EXPRESSION_2
.
.
.
AMD TABLE_A.EXPRESSION_N = TABLE_B.EXPRESSION_N

如果你使用select *来自同一个表中的where where条件然后将它们相交,你就不会得到任何行,因为它们在where条件中使用的特定列上具有不同的值。