SQL排序并更新(UPDATE TOP…ORDER BY)

2023-05-23 13:39 阅读 1,072 次 评论 1 条

我期望的目标是:查找 Proxies 表中 count 小于10的一条数据,并把 count 加上1,代码如下:

UPDATE Proxies SET count=count+1 WHERE count<10 ORDER BY createdAt ASC LIMIT 1;   (这是错误语句)

运行发现报错了,提示更新不能与 ORDER BY 一起使用。

解决方案:

UPDATE "Proxies"
SET "count"="count"+1
WHERE "id" IN (
    SELECT "Proxies"."id"
    FROM "Proxies"
    WHERE "count"<10
    ORDER BY "Proxies"."createdAt"
    LIMIT 1
)
RETURNING "count",...

// 或者
UPDATE "Proxies"
SET "count"="count"+1
FROM (
    SELECT "Proxies"."id"
    FROM "Proxies"
    WHERE "count"<10
    ORDER BY "Proxies"."createdAt"
    LIMIT 1
) AS tab1
WHERE "Proxies"."id"=tab1."id"

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:SQL排序并更新(UPDATE TOP…ORDER BY) | 雨晨博客
分类:MySQL, 数据库笔记 标签:,

发表评论


表情

  1. 夏日博客
    夏日博客 【农民】 @回复

    经常会用到的SQL更新语句。