2016-06-18 1 views
0

например. Я хочу, чтобы удалить последние три записей в таблице нижекак удалить последние записи в режиме -safe-updates

[email protected]:[test]10:14:02>select * from delete_test order by create_time desc; 
+----+------+---------------------+ 
| id | code | create_time   | 
+----+------+---------------------+ 
| 9 | fff | 2016-06-18 10:08:28 | 
| 8 | eee | 2016-06-18 10:08:21 | 
| 7 | ddd | 2016-06-18 10:08:15 | 
| 3 | ccc | 2016-06-17 22:18:48 | 
| 2 | bbb | 2016-06-17 22:18:42 | 
| 1 | aaa | 2016-06-17 22:18:37 | 
+----+------+---------------------+ 

первым я попытался

[email protected]:[test]10:14:14>delete from delete_test where code in (select code from delete_test order by create_time desc limit 3); 
ERROR 1235 (42000): This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' 

я попытался

[email protected]:[test]10:17:05>delete a from delete_test a, (select code from delete_test order by create_time desc limit 3) b where a.code = b.code; 
ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column 

но code поданных является unique key.

тогда я попытался

[email protected]:[test]10:18:49>delete a from delete_test a join (select code from delete_test order by create_time desc limit 3) b on a.code = b.code where a.id>0; 
ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column 

, но я использовал primary key явно.

Так что я хочу знать, как удалить последние записи в режиме --safe-updates?

+0

Что определяет «последние древесные записи»? Мало create_time? –

+0

Да. меньше create_time. – zhuguowei

ответ

0

Вы можете сделать так же просто, как:

delete from delete_test order by create_time limit 3; 

Посмотри здесь работает: http://sqlfiddle.com/#!9/04f68/1

Если бы я не ставил в правильном порядке, просто изменить order by часть в order by create_time desc

+0

Да, ты прав. Сначала я усложнил ситуацию. – zhuguowei

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