Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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_Select_Key_Composite Key - Fatal编程技术网

在MySQL中查找重复行(复合键)

在MySQL中查找重复行(复合键),mysql,select,key,composite-key,Mysql,Select,Key,Composite Key,我有一个表,其中的行格式如下: transactionDate, purchaseOrderId 8/8/2012, 55 8/9/2012, 55 8/8/2012, 88 8/9/2012, 55 8/10/2012, 77 我想找到transactionDate和purchaseOrderId都是精确的所有行。因此,以下两行是重复的: 8/9/2012, 55 8/9/2012, 55 我尝试使用以下查询: SELECT transactionDate, purchaseOrd

我有一个表,其中的行格式如下:

transactionDate, purchaseOrderId
8/8/2012, 55
8/9/2012, 55
8/8/2012, 88
8/9/2012, 55
8/10/2012, 77
我想找到transactionDate和purchaseOrderId都是精确的所有行。因此,以下两行是重复的:

8/9/2012, 55
8/9/2012, 55
我尝试使用以下查询:

SELECT
    transactionDate, purchaseOrderId
FROM
    purchases
GROUP BY
    transactionDate, purchaseOrderId
HAVING COUNT(*) > 1;
然而,除了8月9日的结果外,它还返回了8月8日的结果。如何使其仅返回两列都重复的字段(而不是返回每个日期的所有事务)


谢谢。

将transactionDate列更改为“日期”数据类型,并以适当的日期格式插入值,即('YYYY-MM-DD')。插入以下值:

SELECT 
    transactionDate, purchaseOrderId, COUNT(*) CNT 
FROM 
    purchases 
GROUP BY 
    transactionDate, purchaseOrderId 
HAVING 
    CNT > 1
ORDER BY 
    CNT ASC;
    INSERT into purchases values ('2012-08-09', 55);

然后使用您自己的上述书面查询。它将为您提供您想要的结果。

我认为查询正确-可能值得再次检查您的数据?@FionaT-我再次查看,我认为您实际上是正确的。我不希望有一百万行重复,但我检查过的随机行正在重复(该表相当大-超过2000万行)。因此,也许我最初的查询是正确的。该列已经是日期格式,并且确实有正确的日期格式。正如我在对自己问题的评论回复中所指出的,我问题中的查询已经给出了正确的回答,但我没想到会有这么多重复的行。