我目前正在使用以下版本:
SELECT a,b
FROM tbl
GROUP BY a,b
HAVING COUNT(*)>1;
我知道结果是正确的,因为我在桌子上采取了什么行动。但是,它实际上并没有向我显示重复项。 “GROUP BY”子句阻止另一半记录显示。
我知道这可能有一个简单的解决方案,但我如何显示重复项?换句话说,如果有110个重复,我应该得到220条记录。
由于
答案 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;