2015-05-19 2 views
0

У меня есть данные, аналогичные приведенным ниже в моей таблице:ВЫБРАТЬ DUPLICATE MAX (ID)

id  territory_id  platform_id   title_id other columns 
1  US     ITUNES    155   10 others columns... 
100  US     ITUNES    155   10 others columns... 
101  FR     ITUNES    155   10 others columns... 

мне нужно SELECT MAX(ID) на всех дублированных строк, основываясь на (territory_id, platform_id, title_id).

Запрос на вышеуказанном наборе данных должен возвращать идентификатор 100, так как только дублирующие выше на основе (territory_id, platform_id, title_id) является ('US', 'ITUNES', 155) и MAX(ID) этого дубликат записи 100 (не 1).

Как мне построить этот запрос? До сих пор у меня есть:

SELECT id FROM table GROUP BY territory_id, platform_id, title_id 
+2

'SELECT Territ_ID, platform_id, title_id, MAX (id) FROM my_table GROUP BY territory_id, platform_id, title_id;' – Strawberry

+0

У этого есть вопрос, который должен быть дублирующим, и я не могу его найти. – AdamMc331

+0

Возможный дубликат [Найти последний идентификатор дубликатов с MySQL] (http://stackoverflow.com/questions/17618415/find-most-recent-duplicates-id-with-mysql) – AdamMc331

ответ

2

Вы можете GROUP BY на 3 поля, а затем с помощью HAVING положение можно определить дубликаты. Использование MAX вы можете получить максимальную ID для каждой из этих групп, имеющих дубликаты:

SELECT MAX(ID), territory_id, platform_id, title_id 
FROM MyTable 
GROUP BY territory_id, platform_id, title_id 
HAVING COUNT(*) > 1 

SQL Fiddle Demo

1

Я думаю, вы ищете что-то вроде этого

выбрать DISTINCT territory_id, макс (ID) , platform_id, title_id из теста t ГРУППА BY area_id, platform_id, title_id ИМЕЮЩИЙ СЧЕТ (*)> 1

Вот результаты из дублированной таблицы territory_id ID platform_id title_id США 100 ITUNES 155

Если вам нужно вы могли бы пойти на один шаг дальше и объявить переменную, если это сделает свой путь к отчету.