Я пытаюсь избавиться от повторяющихся записей из следующего набора результатов:Во избежание дублирования записей на основе нескольких столбцов в PostgresSQL
ID Name missionID teamID eventTimestamp
25 C 1000415147500265653 1 02-11-2014 14:04
25 C 1000415147500265653 1 02-11-2014 14:04
25 C 1000415147500265653 1 02-11-2014 14:04
25 C 1000415147500265653 1 02-11-2014 14:04
25 C 1000415147500265653 2 02-11-2014 14:06
25 C 1000415147500265653 2 02-11-2014 14:06
25 C 1000415147500265653 2 02-11-2014 14:06
25 C 1000415147500265653 2 02-11-2014 14:07
25 C 1000415147500265653 2 02-11-2014 14:07
25 C 1000415147500265653 1 02-11-2014 14:08
25 C 1000415147500265653 1 02-11-2014 14:08
Для каждой комбинации targetID, Имя_целевого_объекта, missionID, TeamID и eventTimestamp я только хочу 1 запись. Поэтому я хочу, чтобы результирующий набор выглядел так, как указано выше:
targetID targetName missionID teamID eventTimestamp
25 C 1000415147500265653 1 02-11-2014 14:04
25 C 1000415147500265653 2 02-11-2014 14:06
25 C 1000415147500265653 2 02-11-2014 14:07
25 C 1000415147500265653 1 02-11-2014 14:08
Как вы можете видеть. могут быть другие записи с той же комбинацией targetID, targetName, missionID, teamID, но с другой временной меткой - и мне нужно их сохранить, поэтому я не могу просто запустить максимальную или минимальную дату. Я попытался использовать разные, ранжирование и группу, но ничего не работает, я продолжаю получать повторяющиеся записи. Если я использую макс или мин на дату я получаю только один вход на targetID, Имя_целевого_объекта, missionID, TeamID - и это не то, что я хочу
Мой исходный запрос только, чтобы получить дубликат набора результатов заключается в следующем:
select targetID, targetName, missionID, teamID, eventTimestamp from (
select a.characterID, a.targetID, a.targetName, a.missionID, b.teamID as teamID, a.eventTimestamp from events_live a
left join (
select distinct characterID, teamID from events_live where eventName = 'missionStarted' or eventName = 'characterCreated') b on a.characterID = b.characterID
where eventName ='missionObjective' and a.eventTimestamp > '2014-10-31' and a.eventTimestamp < '2014-11-07' and objectiveName = 'Capture' and (targetID ='25' or targetID='26' or targetID ='27' or targetID = '28' or targetID = '29') and b.teamID is not null
order by missionID, targetID, eventTimestamp
)t1
order by missionID, targetID, eventTimestamp
Я попытался сделать еще один выбор с группой по targetID, targetName, missionID, teamID, eventTimestamp поверх оригинала - и я все равно получаю дубликаты. Я попытался запустить отличие от eventTimestamp, но она до сих пор не дает мне то, что я хочу
Я пробовал это и продолжаю получать дубликаты. –
. Pls отправил ваш запрос, который вы пробовали. – Robert
. Хорошо, но он находится в своем большом запросе с объединениями, чтобы получить дубликат результирующего набора: –