如何删除第一行适合的要求?- MySQL(MariaDB)

s6fujrry  于 2022-11-08  发布在  Mysql
关注(0)|答案(2)|浏览(112)

我有这样一个准则,

DELETE FROM queue WHERE id IN
(SELECT id FROM queue WHERE id=%s LIMIT 1)

但在启动时,会出现这样的错误
This version of MariaDB doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
你能告诉我如何做没有标签IN或实现它在所有不同的?谢谢。

bfhwhh0e

bfhwhh0e1#

MariaDB和MySql允许在DELETE语句中使用ORDER BY子句(您应该使用该子句)和LIMIT

DELETE FROM queue 
WHERE id = %s
-- ORDER BY ....
LIMIT 1;
eqoofvh9

eqoofvh92#

您可以将您的逻辑表述为删除连接:

DELETE q1
FROM queue q1
INNER JOIN
(
    SELECT id
    FROM queue
    WHERE id = %s
    -- ORDER BY some column here
    LIMIT 1
) q2
    ON q2.id = q1.id;

但是请注意,如果您使用的是LIMIT,那么您实际上也应该使用ORDER BY。我在子查询中为ORDER BY子句添加了一个占位符。

相关问题