У меня есть таблица с этими столбцами:Удаление записей из таблицы, отсортированные двумя колоннами
tel_number,date,time
Там может быть несколько записей для одного tel_number. Для каждого tel_number я хочу удалить все, кроме записи, которая имеет самую последнюю дату из таблицы, и в тех случаях, когда есть несколько записей за самую последнюю дату, тот, который в последний раз выбирается, и все остальные следует удалить из таблицы.
, например, из записей, как эти:
1 2223333,14/01/28,08:30
2 2223333,14/01/27,08:30
3 2223333,14/01/28,16:30
4 2225555,14/01/27,10:34
5 2225555,13/12/29,10:34
все записи, кроме этих двух должны быть удалены:
3 2223333,14/01/28,16:30
4 2225555,14/01/27,10:34
редактировать:
Я попытался это до сих пор, но это Безразлично 't удалять записи, которые имеют ту же дату, но в разное время:
delete from table where (tel_number,date) not in
(select tel_number,max(date) from table group by tel_number);
Выделите строки с наибольшими датами, опустошите таблицу и вставьте данные. Это довольно наивный подход, но простой в реализации. –
Можете ли вы поделиться с нами тем, чего вы пытаетесь достичь? –
@Narges Ваш первоначальный подход находится на правильном пути. Подумайте, почему ваш запрос не находит записи с наибольшим значением времени. Вы очень близки и просто должны правильно продлить свою попытку. –