PostgreSQL 中的更新顺序
UPDATE order in PostgreSQL
我有一个mysql命令:
update table_demo SET flag= 1 where flag=0 ORDER BY id ASC LIMIT 10
并且在 Postgres 中需要相同的命令,我得到这个错误:
ERROR: syntax error at or near 'ORDER'
要更新前 10 行(实际上需要更新):
UPDATE table_demo t
SET flag = 1
FROM (
SELECT table_demo_id -- use your actual PK column(s)
FROM table_demo
WHERE flag IS DISTINCT FROM 1
ORDER BY id
LIMIT 10
FOR UPDATE
) u
WHERE u.table_demo_id = t.table_demo_id;
FOR UPDATE
(行级锁)仅用于防止并发写访问。如果您的交易是唯一写入该 table 的交易,则不需要它。
如果定义了flag NOT NULL
,你可以使用WHERE flag <> 0
.
具有更多解释和链接的相关答案:
Update top N values using PostgreSQL
How do I (or can I) SELECT DISTINCT on multiple columns?
我有一个mysql命令:
update table_demo SET flag= 1 where flag=0 ORDER BY id ASC LIMIT 10
并且在 Postgres 中需要相同的命令,我得到这个错误:
ERROR: syntax error at or near
'ORDER'
要更新前 10 行(实际上需要更新):
UPDATE table_demo t
SET flag = 1
FROM (
SELECT table_demo_id -- use your actual PK column(s)
FROM table_demo
WHERE flag IS DISTINCT FROM 1
ORDER BY id
LIMIT 10
FOR UPDATE
) u
WHERE u.table_demo_id = t.table_demo_id;
FOR UPDATE
(行级锁)仅用于防止并发写访问。如果您的交易是唯一写入该 table 的交易,则不需要它。
如果定义了flag NOT NULL
,你可以使用WHERE flag <> 0
.
具有更多解释和链接的相关答案:
Update top N values using PostgreSQL
How do I (or can I) SELECT DISTINCT on multiple columns?