2015-11-05 134 views
1

我有一个列ID,内容和日期的表。我想找到有重复的内容和日值的所有行和显示所有检查多个列进行重复并列出所有记录

SELECT ID,Content, `Day`, Count(*) 
FROM table 
GROUP BY Content,`Day` 
HAVING COUNT(*) > 1 

当前的代码将返回重复的内容的列表和“日”的值,例如:

ID|Content|Day 
1 | a | 1 
2 | a | 1 
3 | a | 1 
4 | b | 2 
5 | b | 2 
6 | c | 3 
7 | c | 4 

会导致:

ID|Content|Day|Count 
1 | a | 1 | 3 
4 | b | 2 | 2 

但我要显示所有的唯一ID为好;

ID|Content|Day 
1 | a | 1 
2 | a | 1 
3 | a | 1 
4 | b | 2 
5 | b | 2 
+0

加入该查询整个表 – Mihai

+0

很高兴你正在帮助,但也许你应该开始一个SQL教程,而不是每12小时提问一次。你会学到更多,当你需要复杂的东西帮助时,我们仍然在这里。 –

回答

1

只是做一个Sub-Query

select * 
from table 
where `day` in 
( 
SELECT ID 
FROM table 
GROUP BY Content,`Day` 
HAVING COUNT(*) > 1 
) A 
+0

认为您需要子查询来返回内容和日期,并在子查询中检查_(content,'day')。 – Kickstart

1

使用它作为一个子查询的加盟对表再次查询: -

SELECT table.ID, table.Content, table.`Day` 
FROM table 
INNER JOIN 
(
    SELECT Content, `Day`, Count(*) 
    FROM table 
    GROUP BY Content,`Day` 
    HAVING COUNT(*) > 1 
) sub0 
ON sub0.Content = table.Content 
AND sub0.`Day` = table.`Day`