mysql - PostgreSQL 中的更新顺序

标签 mysql sql postgresql sql-update

我有一个 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 (行级锁)只需要防止并发写访问。如果您的事务是唯一写入该表的事务,则您不需要它。

如果标志被定义NOT NULL , 你可以使用 WHERE flag <> 0 .

具有更多解释和链接的相关答案:

关于mysql - PostgreSQL 中的更新顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29291224/

相关文章:

php - 使用mysql数据库在php中创建.exe文件

php - 将时间范围合并到一个时间范围php

sql - 使用 PostgreSQL 剪切部分字符串

ruby-on-rails - 使用 Rails 按连接表值排序

postgresql - 使用 Doctrine2 和 PostgreSQL 的多数据库架构和迁移

c# - 将 Windows 窗体文本框输入值与数据库 C# SQL 中的值进行比较

mysql - 基于MySQL中的另一个表更新关系表

mysql - 当每行递增每个值时,如何使用 “ON DUPLICATE KEY UPDATE” 递增 MySql 中的字段?

mysql - 根据事件时间长度显示表中的记录数?

postgresql - 如何在 OS Sierra 上 brew uninstall postgres