В моей базе данных MySQL У меня есть таблица, подобная этому:MySQL удаления строк с повторяющимися датами держать последнюю один
Data |Val | Val2
2016-11-11 14:48:38 |10 | 20
2016-11-11 14:48:38 |30 | 40
2016-11-06 11:48:38 |50 | 60
2016-11-08 19:48:38 |70 | 80
2016-11-06 11:48:38 |90 |100
2016-11-16 10:13:37 |100 |110
2016-11-16 10:13:37 |120 |130
2016-11-16 10:16:43 |140 |150
2016-11-16 10:13:37 |140 |150
Иногда в моей базе данных я могу иметь повторяющиеся даты (данные), но разные значения (val, val2), я хочу удалить все строки с повторяющимися данными, кроме последней, вставленной в базу данных. Как я могу это достичь? Например, для таблицы выше, в результате чего я хочу это:
Data |Val |Val2
11/11/2016 14:48 |30 |40
08/11/2016 19:48 |70 |80
06/11/2016 11:48 |90 |100
16/11/2016 10:16 |140 |150
16/11/2016 10:13 |140 |150
Я использовал sqlite3 и я мог бы достичь того, чего я хочу, делая
delete from table where rowid not in (select max(rowid) from table group by data)
, но я не мог найти эквивалент для mysql.
Вы можете найти ответ здесь HTTP: // StackOverflow .com/вопрос s/2728413/analog-of-oracle-s-rowid-in-mysql –
идентификатор объекта, с которым вы используете rowid, поэтому, если в таблице есть первичный ключ, вы можете использовать его для получения того же эффекта –
1) SELECT & remember строка, которую вы хотите, 2) УДАЛИТЬ все строки, 3) ВСТАВИТЬ сохраненную строку? Это не красиво, но ... – Mawg