2017-12-21 11 views
1

は、私は(私は、同じデータを含む2 TankSystemIdsのために疑い)の違いのための2つのテーブルの値を比較しようとしているSQL Serverマイナスクエリで問題が発生しますか?

私のクエリは

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

MINUS 

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

あるしかし、私は、構文の問題についてのエラーを取得:

付近に正しくない構文 'マイナス'

しかしこれは正しいですか? [1] https://www.techonthenet.com/sql/minus.php

+2

「INTERSECT」を使用して「マイナス」を置き換えますか? –

+0

私は交差しようとしましたが、異なるIDのために単一の行を返しませんでした。* [FROM [dbo]を選択する必要があります[vwRawSaleTransaction] hdTankSystemId = 2381 INTERSECT select * FROM [dbo]。[vwRawSaleTransaction] where hdTankSystemId = 2382 // – Ratha

答えて

1

あなたのリンクに引用されています。

SQL Server、PostgreSQL、SQLiteなどのデータベースでは、EXCEPT演算子を使用してこのタイプのクエリを実行します。

あなたのケースでは、重複したデータを探しているようですが、代わりに交差を使用する必要があります。また、

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

ようINTERSECT文は、あなたは条件が、それらを交差する場所異なると同じテーブルからSELECT *を使用する場合、あなたはするつもりはありません

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 

のように書くことができ

whereで使用される特定の列で異なる値を持つ行を取得します。

+0

Thnaks a lot .. I dint notice ...しかし交差は間違っていますか? – Ratha

+0

私は交差しようとしましたが、異なるIDのために単一の行を返しませんでした。// FROM [dbo]を選択する必要がありました[vwRawSaleTransaction] hdTankSystemId = 2381 INTERSECT select * FROM dbo]。[vwRawSaleTransaction] where hdTankSystemId = 2382 // – Ratha

+0

"EXCEPT"を試してください...ほとんどのデータベースタイプで動作する除外結合を行うことができます。 –

関連する問題