Поиск и отображение дубликатов - PullRequest
2 голосов
/ 16 апреля 2009

У меня есть стол. Я хотел бы найти в этой таблице дубликаты названий.
Допустим, мои данные таковы:

title1, title2, title3, title1, title4, title2, title9

Я бы хотел, чтобы мой запрос выполнил поиск в этой таблице и вывел только дубликаты. Таким образом, результат будет выглядеть так:
title1
title1
title2
title2

Я знаю, как найти дубликаты, но он показывает мне только один из дубликатов, а не оба.

SELECT id, title, artist_id FROM sm019_songs GROUP BY title HAVING count(title) > 1

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 16 апреля 2009

Вот один из способов сделать это с помощью подзапроса. Возможно, имеет смысл сначала загрузить подзапрос во временную таблицу. (Это будет работать на сервере SQL, но не уверен, какой будет точный синтаксис MySql.)

select id, title, artist_id
from sm019_songs
where title in
(
    SELECT title
    FROM sm019_songs
    GROUP BY title
    HAVING count(title) > 1
)
0 голосов
/ 16 апреля 2009

Я бы просто присоединился к столу к себе:

SELECT S1.*, S2.*
FROM songs S1, songs S2
WHERE S1.title = S2.title
  AND S1.id != S2.id

----- N

0 голосов
/ 16 апреля 2009

это то, что я придумал в MySQL:

CREATE TEMPORARY TABLE u (title varchar(250))<br> TYPE=HEAP;<br> INSERT INTO u<br> SELECT title FROM t group by title having count(title) > 1; </p> <p>SELECT t.title FROM u,t where u.title = t.title<br>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...