我有这样一个准则,
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或实现它在所有不同的?谢谢。
This version of MariaDB doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
IN
bfhwhh0e1#
MariaDB和MySql允许在DELETE语句中使用ORDER BY子句(您应该使用该子句)和LIMIT:
DELETE
ORDER BY
LIMIT
DELETE FROM queue WHERE id = %s -- ORDER BY .... LIMIT 1;
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子句添加了一个占位符。
2条答案
按热度按时间bfhwhh0e1#
MariaDB和MySql允许在
DELETE
语句中使用ORDER BY
子句(您应该使用该子句)和LIMIT
:eqoofvh92#
您可以将您的逻辑表述为删除连接:
但是请注意,如果您使用的是
LIMIT
,那么您实际上也应该使用ORDER BY
。我在子查询中为ORDER BY
子句添加了一个占位符。