我正在尝试比较两个表的差异值(我怀疑两个 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
答案 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条件中使用的特定列上具有不同的值。