如何选择匹配一列中的值而不是MySql中其他列的记录?

时间:2013-01-09 14:55:42

标签: mysql optimization join

我正在尝试选择相同但具有不同网络值的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条记录,而且查询需要很多时间(甚至无法得到结果)。

有没有更好的方式呢?

感谢。

1 个答案:

答案 0 :(得分:2)

试试这个:

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

这应该更快,使用<>条件的连接(通常)更慢。