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



我有这样一个代码,

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或实现它完全不同吗?谢谢。

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

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

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

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子句的子查询中添加了一个占位符。

最新更新