2009-04-16 4 views
2

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

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 

Любые идеи?

ответ

2

Вот один из способов сделать это с помощью подзапроса. Возможно, имеет смысл сначала загрузить подзапрос в временную таблицу. (Это будет работать в сервере 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

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

CREATE TEMPORARY TABLE u (title varchar(250))
TYPE=HEAP;
INSERT INTO u
SELECT title FROM t group by title having count(title) > 1;

SELECT t.title FROM u,t where u.title = t.title

0

Я просто присоединиться таблица к себе:

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

----- N

Смежные вопросы