【问题标题】:On duplicate key query关于重复键查询
【发布时间】:2023-03-21 11:36:01
【问题描述】:

我正在尝试在 postgres 上执行以下 sql 查询:

INSERT INTO Works_On (ESSN,PNo,Hours) VALUES ('199112111',3,3)
ON DUPLICATE KEY UPDATE Hours = 3;

但是当我这样做时,会出现以下错误:

psql:test2.sql:2: ERROR:  syntax error at or near "ON"
LINE 2: ON DUPLICATE KEY UPDATE Hours = 3;
        ^

我真的找不到错误,非常感谢帮助!

【问题讨论】:

  • 您在 Postgres 上使用 MySQL 语法。这就是您收到错误的原因。
  • psql 看起来你正在使用postgresql。添加了相同的标签。此外,postgresql 中没有ON DUPLICATE KEY UPDATE。请参阅可能对您有帮助的相关帖子stackoverflow.com/questions/1109061/…

标签: sql postgresql sql-insert on-duplicate-key


【解决方案1】:

ON DUPLICATE KEY UPDATE 在 postgresql 中不可用。您可以运行以下查询。

UPDATE Works_on SET Hours = 3 WHERE ESSN='199112111' AND PNo=3;
INSERT INTO table (id, field, field2)
       SELECT '199112111',3,3
       WHERE NOT EXISTS (SELECT 1 FROM Works_on WHERE ESSN='199112111' AND PNo=3);

这里,如果ESSN='199112111' AND PNo=3已经有一行,UPDATE查询就会成功

如果ESSN='199112111' AND PNo=3 的行不存在,INSERT 查询将成功。

【讨论】:

    猜你喜欢
    • 2014-10-07
    • 1970-01-01
    • 2013-03-03
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多