I have such a code,
DELETE FROM queue WHERE id IN
(SELECT id FROM queue WHERE id=%s LIMIT 1)
but when starting, such an error appears
This version of MariaDB doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Can you tell me how to do without a tag IN or to realize it at all differently? Thanks.
CodePudding user response:
MariaDB and MySql allow an ORDER BY clause (which you should use) and LIMIT in a DELETE statement:
DELETE FROM queue
WHERE id = %s
-- ORDER BY ....
LIMIT 1;
CodePudding user response:
You might be able to get away with phrasing your logic as a delete join:
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;
But note that if you are using LIMIT, you should really also be using ORDER BY. I have added a placeholder in the subquery for an ORDER BY clause.
