MySQL显示重复

时间:2011-09-02 03:06:31

标签: mysql

我目前正在使用以下版本:

SELECT a,b
FROM tbl
GROUP BY a,b
HAVING COUNT(*)>1;

我知道结果是正确的,因为我在桌子上采取了什么行动。但是,它实际上并没有向我显示重复项。 “GROUP BY”子句阻止另一半记录显示。

我知道这可能有一个简单的解决方案,但我如何显示重复项?换句话说,如果有110个重复,我应该得到220条记录。

由于

6 个答案:

答案 0 :(得分:1)

试试这个

select * 
from tbl DP
join
(
SELECT a,b
FROM tbl
GROUP BY a,b
HAVING COUNT(*)>1;
)  xx
where xx.a=DP.a and xx.b=DP.B

不完全确定mySQL语法,但这个SQL应该可以正常工作

答案 1 :(得分:1)

SELECT a,b, 
 COUNT(a) AS A,
 COUNT(b) AS B
FROM tbl
GROUP BY a
HAVING A > 1;

答案 2 :(得分:1)

我假设你的意思是tbl有比a,b更多的列和可能的pk id。

SELECT t1.*
FROM tbl t1
JOIN (
SELECT a, b
FROM tbl
GROUP BY a, b
HAVING COUNT(*) > 1
) t2
ON t1.a = t2.a AND t1.b = t2.b

答案 3 :(得分:1)

我道歉。既然我知道字段b的限制,我真的使用了错误的陈述。我最终选择了:

SELECT * FROM tbl
    WHERE (b = x OR b = y)
    AND a IN (SELECT a FROM tbl WHERE b = y)
    ORDER BY a ASC

这正是我所需要的。

感谢您的所有输入。

答案 4 :(得分:0)

我对此非常成功:

SELECT DISTINCT
    tbl.user_id,
    tbl.duped_value
FROM your_table AS tbl
WHERE EXISTS (
    SELECT COUNT( tbl2.duped_value ) AS dcnt
    FROM your_table AS tbl2
    WHERE tbl.duped_value = tbl2.duped_value
    GROUP BY tbl2.user_id
    HAVING dcnt > 1
)

它的作用是搜索具有重复不同值的条目,例如来自YouTube的视频ID或类似的内容,根据用户的条目应该是唯一的。

答案 5 :(得分:-2)

SELECT a,b, COUNT(*) AS nmb FROM tb1 GROUP BY a,b HAVING nmb > 1;