Как Sql вернуть только все дублированные записи - PullRequest
0 голосов
/ 11 августа 2009

у меня есть таблица, имеющая

create table test(id int not null primary key, day date not null);

insert into test(id, day) values(1, '2006-10-08');
insert into test(id, day) values(2, '2006-10-08');
insert into test(id, day) values(3, '2006-10-09');

select * from test;
+----+------------+
| id | day        |
+----+------------+
|  1 | 2006-10-08 |
|  2 | 2006-10-08 |
|  3 | 2006-10-09 |
+----+------------+


select day, count(*) from test GROUP BY day;
+------------+----------+
| day        | count(*) |
+------------+----------+
| 2006-10-08 |        2 |
| 2006-10-09 |        1 |
+------------+----------+


select day, count(*) from test group by day HAVING count(*) > 1;
+------------+----------+
| day        | count(*) |
+------------+----------+
| 2006-10-08 |        2 |
+------------+----------+

Что мне нужно, мне нужно вернуть дубликаты записей

Это простой выход, который мне нужен

+------------+----------+
| day        |    id    |
+------------+----------+
| 2006-10-08 |        2 |
| 2006-10-08 |        1 |
+------------+----------+

Ответы [ 2 ]

6 голосов
/ 11 августа 2009

Попробуйте самостоятельно присоединиться

SELECT T1.day, T1.id
FROM   test T1
INNER JOIN test T2
ON T1.id <> T2.id AND T1.day = T2.day
0 голосов
/ 11 августа 2009
select id, count(day) as cnt from test group by day HAVING cnt > 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...