2016-06-18 5 views
0

私が最初に私は、私は--safe-updatesモードで最新のレコードを削除する方法

[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が​​ある

[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: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 | 
+----+------+---------------------+ 

以下の表に、最新の3つのレコードを削除したいです。

はその後、私は

[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

ものを定義するorder by部分を変更「最新のツリーレコード」?少ない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 create_time desc

+0

ええ、あなたは正しいです。最初は物事をもっと複雑にしました。 – zhuguowei

関連する問題