我有这样一个代码,
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
子句的子查询中添加了一个占位符。