0

これは Mysql で機能しますが、MariaDB の構文が異なるようです。返された最初の 900 行 (LIMIT 900) を超えるものはすべて削除しようとしています。

DELETE FROM cronschedule NOT IN (SELECT * FROM cronschedule LIMIT 900);

Maria でこれを実行しようとすると、次のエラーが返されます。

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that 
corresponds to your MariaDB server version for the right syntax to use near 
'NOT IN (SELECT * FROM cronschedule LIMIT 900)' at line 1

では、マリアでこれを行うにはどうすればよいでしょうか。

4

2 に答える 2

2

これは、構造に関するあなたの答えよりも少し効率的であると思いますLEFT JOIN / IS NULL:

DELETE  cr.*
FROM    cronschedule cr
    JOIN
        (
        SELECT  id
        FROM    cronschedule ii
        ORDER BY
                id ASC
        LIMIT 1 OFFSET 900
        ) i2
ON      cr.id >= i2.id ;
于 2013-10-24T16:51:47.153 に答える