簡體   English   中英

在MariaDB中刪除超過900行的所有內容

[英]Remove anything above 900 rows in MariaDB

這在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

那么我將如何在Maria做到這一點?

我希望這比使用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 ;

這似乎有效

DELETE  cr.*
FROM    cronschedule cr
LEFT JOIN
        (
        SELECT  id
        FROM    cronschedule ii
        ORDER BY
                id ASC
        LIMIT 900
        ) i2
ON      cr.id = i2.id
WHERE   i2.id IS NULL;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM