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

问题描述 投票:1回答:1

我试图比较两个表的差异值(我怀疑两个包含相同数据的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

sql sql-server
1个回答
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条件的select然后与它们相交,那么您将不会获得任何行,因为它们在where条件中使用的特定列具有不同的值。

© www.soinside.com 2019 - 2024. All rights reserved.