0

同じであるがネットワーク値が異なるMerchantIDを選択しようとしています。次に例を示します。

ID   MerchantID   Network 
1    1            A 
2    1            A 
3    2            B 
4    2            C 
5    3            D 
6    3            D

その場合、クエリで「2」を返したいと思います(これは、異なるネットワークを持つ唯一のMerchantIDであるためです)。

今まで私は次のクエリを持っています:

SELECT   a.MerchantID
FROM     table a
JOIN   table b
ON  a.ID = b.ID
AND a.Network <> b.Network
AND a.MerchantID = b.MerchantID 
GROUP BY a.MerchantID

テーブルには約43,000のレコードがあり、そのクエリにはかなりの時間がかかります(結果を取得することさえできませんでした)。

それを行うためのより良い方法はありますか?

ありがとう。

4

1 に答える 1

2

これを試して:

SELECT MerchantID
FROM yourtable
GROUP BY MerchantID
HAVING COUNT(Distinct Network)>1

これは高速である必要があり、条件を使用する結合<>は(通常)低速です。

于 2013-01-09T14:57:12.350 に答える