PostgreSQL中的UPDATE命令

时间:2015-03-27 00:17:01

标签: mysql sql postgresql sql-update

我有一个mysql命令:

 update table_demo SET flag= 1 where flag=0 ORDER BY id ASC LIMIT 10

并且在Postgres中需要相同的命令,我收到此错误:

  

错误:'ORDER'

附近的语法错误

1 个答案:

答案 0 :(得分:2)

要更新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(行级锁定)来防止并发写入访问。如果您的交易是唯一一个写入该表的交易,那么您就不需要它。

如果定义了标记NOT NULL,则可以使用WHERE flag <> 0

相关答案以及更多解释和链接: