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

发布于 2025-02-07 09:02:26 字数 273 浏览 2 评论 0原文

我有这样的代码,

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

但是当启动时,出现此类错误

此版本的Mariadb尚未支持'limit&在/all/任何/某些子查询'

您可以告诉我如何在没有标签中的标签的情况下做或完全不同?谢谢。

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧竹 2025-02-14 09:02:26

Mariadb和MySQL允许子句(您应该使用)和limit delete 语句:

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

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;
携余温的黄昏 2025-02-14 09:02:26

您也许可以将逻辑作为DELETE加入而逃脱:

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,则实际上也应该使用订购订单。我已经在子查询中添加了一个占位符,以通过子句为订单。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文