1

タイムスタンプに基づいて、最新の 25 件を除くすべてのエントリを削除しようとしています。私はこれを試しました:

DELETE FROM `chat` WHERE `IndexNo` NOT IN(SELECT `IndexNo` FROM `chat` ORDER BY `Timestamp` DESC LIMIT 25)

これにより、次のエラーが生成されます。

#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

これを達成する方法はありますか?

4

2 に答える 2

1

サブクエリで依存することはできませんLIMITIN/ALL/ANY/SOME、代わりに複数削除構文を使用できます。

DELETE 
  `chat` 
FROM 
  `chat` 
    LEFT JOIN (SELECT `IndexNo` FROM `chat` ORDER BY `Timestamp` DESC LIMIT 25) AS `selected`
      ON `chat`.`IndexNo`=`selected`.`IndexNo` 
WHERE 
  `selected`.`IndexNo` IS NULL;

-マニュアルによると、これはMySQL 5.0以降で機能します

于 2013-08-29T13:05:00.297 に答える
0

サブクエリに関するより一般的な問題だと思います。ここを見てみてください: LIMIT & IN/ALL/ANY/SOME サブクエリの問題

于 2013-08-29T12:55:55.670 に答える