Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySql中,如何选择与一列中的值匹配而与另一列中的值不匹配的记录?_Mysql_Optimization_Join - Fatal编程技术网

在MySql中,如何选择与一列中的值匹配而与另一列中的值不匹配的记录?

在MySql中,如何选择与一列中的值匹配而与另一列中的值不匹配的记录?,mysql,optimization,join,Mysql,Optimization,Join,我试图选择相同但网络价值不同的商品,例如: 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

我试图选择相同但网络价值不同的商品,例如:

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
问题是,这个表大约有43000条记录,而这个查询需要花费很多时间,甚至都无法得到结果

有没有更好的办法

谢谢。

试试这个:

SELECT MerchantID
FROM yourtable
GROUP BY MerchantID
HAVING COUNT(Distinct Network)>1
这应该更快,使用条件通常较慢的联接