У меня есть таблица, в которой иногда будут повторяющиеся записи за один и тот же день, но разные содержат другое время вставки в зависимости от того, когда данные были загружены в базу данных. Я ищу способ удалить более ранние записи, содержащие одну и ту же дату, но более раннее время, если запись вставляется более одного раза в этот день.
Что я имею:
ID insert_time
1 2020-04-26 04:23:04.923
2 2020-04-26 04:23:04.923
3 2020-04-26 04:23:04.923
1 2020-04-28 12:13:04.923
2 2020-04-28 12:13:04.923
3 2020-04-28 12:13:04.923
1 2020-04-28 13:13:04.923
2 2020-04-28 13:13:04.923
1 2020-04-29 10:16:03.876
2 2020-04-29 10:16:03.876
3 2020-04-29 10:16:03.876
Что я хочу:
ID insert_time
1 2020-04-26 04:23:04.923
2 2020-04-26 04:23:04.923
3 2020-04-26 04:23:04.923
3 2020-04-28 12:13:04.923
1 2020-04-28 13:13:04.923
2 2020-04-28 13:13:04.923
1 2020-04-29 10:16:03.876
2 2020-04-29 10:16:03.876
3 2020-04-29 10:16:03.876
Текущий запрос, над которым я работаю:
SELECT * FROM my_table
WHERE insert_time
IN (SELECT MIN(insert_time)
FROM my_table GROUP BY [id])
но он возвращает только записи с самым ранним временем вставки во всей таблице. Я застрял, пытаясь понять, как вернуть строки, которые имеют более одного insert_time одной и той же даты, а затем выбрать более раннюю из них.
ID
не уникален? Как однозначно идентифицировать строку? - person Aaron Bertrand   schedule 23.11.2020ID
кажется уникальным в данный день. - person Tim Biegeleisen   schedule 23.11.2020ID
каким-либо образом сinsert_time
(например, является ли самый высокийID
в данный день также последней строкой)? - person Aaron Bertrand   schedule 23.11.2020ID
. - person Aaron Bertrand   schedule 23.11.2020ID = 1
, 28 апреля). В любом случае, в идеале, у вас также есть способ однозначно идентифицировать строку (и еслиID
не может этого сделать, это плохое имя). Я согласен, что это то, что вы хотите, но это не то, что у вас есть. - person Aaron Bertrand   schedule 23.11.2020