我试图选择相同但具有不同“网络”值的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条记录,该查询需要大量时间(甚至无法获得结果)。

有什么更好的方法吗?

谢谢。

最佳答案

尝试这个:

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


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

关于mysql - 如何选择与MySql中的一列中的值匹配而不在另一列中的值的记录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14237969/

10-11 18:30