2015-04-24 3 views
0

У меня есть эта таблица на MySql:Удалить повторяющиеся строки, кроме последнего

Table1

ID CODE  USER  NUMBER  ADJUSTMENT  ADJUST_DATE 
1  abc  Frank  10245  1    2015/04/20 
2  def  Jonathan 25410  0    2015/04/21 
3  ghi  Karen  55214  3    2015/05/05 
4  abc  Frank  10245  2    2015/04/21 
5  abc  Frank  10245  4    2015/04/22 

Я хотел бы, чтобы удалить дублированные данные и оставить последнюю запись по дате:

ID CODE  USER  NUMBER  ADJUSTMENT  ADJUS_DATE 
2  def  Jonathan 25410  0    2015/04/21 
3  ghi  Karen  55214  3    2015/05/05 
5  abc  Frank  10245  4    2015/04/22 

КОД, ПОЛЬЗОВАТЕЛЬ, НОМЕР, РЕГУЛИРОВКА, ADJUS_DATE являются «уникальными»

Мне нужно создать временную таблицу с результат, потому что мне нужны все записи.

+0

Этот вопрос немного не хватает информации. Можете ли вы поделиться тем, что вы пробовали, и с какими проблемами вы столкнулись? –

+0

вы сказали, что CODE, USER, NUMBER, ADJUSTMENT, ADJUS_DATE являются «уникальными», а затем как они дублируются! почему вы не проверяли их перед вставкой в ​​db. –

ответ

2

Сформировать подмножество максимального момента, сгруппированных одинаковыми значениями в столбцах и присоединиться обратно к базовому набору ...

SELECT A.ID, A.Code, A.user, A.Number, A.Adjustment, A.Adjust_date 
FROM table1 A 
INNER JOIN (SELECT Code, User, Number, max(adjust_date) mDate 
      FROM table1 group by Code, User, Number) B 
    on A.code = B.code 
and A.user = B.User 
and A.Number = B.Number 
and A.Adjust_date = B.mdate 
+0

Спасибо @xQbert, я только что изменил "и A.Adjust_date = B.Adjust_date" by "и A.Adjust_date = mDate", и это сработало !! – Seph1603

Смежные вопросы