Удаление записей - PullRequest
       5

Удаление записей

1 голос
/ 29 июня 2011

У меня есть таблица [user_logs] со следующими полями [username], [datetimelog]

Пример данных

==============
user1   2011-06-28 08:49:01
user2   2011-06-28 08:59:38
user3   2011-06-28 09:04:31
user4   2011-06-28 10:00:15
user2   2011-06-28 10:28:54
user1   2011-06-29 08:31:22
user9   2011-06-29 08:32:32
user2   2011-06-29 10:13:53
user1   2011-06-29 13:11:15

Я хочу знать, как создать запрос SQL Delete дляудалите все пользовательские журналы, КРОМЕ их последнего журнала, так что приведенный выше пример выдаст следующее после запроса DELETE

user1   2011-06-29 13:11:15
user2   2011-06-29 10:13:53
user3   2011-06-28 09:04:31
user4   2011-06-28 10:00:15
user9   2011-06-29 08:32:32

Ответы [ 3 ]

0 голосов
/ 29 июня 2011
DELETE FROM table a WHERE time != (SELECT MAX(time) FROM table b WHERE b.user=a.user);

Здесь удаляется строка, если это не максимальное время в группе с тем же идентификатором user_id

0 голосов
/ 29 июня 2011
DELETE from user_logs UL1, user_logs UL2
where UL1.username =UL2.datetimelog
and UL1.datetimelog < UL2.datetimelog

Попробуйте это

0 голосов
/ 29 июня 2011

Как насчет:

DELETE FROM 
    MY_TABLE M -- delete from the table
LEFT JOIN
    MY_TABLE M2 ON M.user = M2.user -- table needs to be joined TO ITSELF
WHERE
    NOT M.LOG_DATE = MAX( M2.LOG_DATE ) -- Anything which isn't MAX goes.

Может ли это сработать?

...