在检查是否需要保留旧值或插入新值的同时在postgres SQL上更新查询?

厌食症

我有一个postgres SQL查询,我想在这里做upsert。我的pk1, pk2列是复合主键。dk1, dk2, timek如果与主键约束冲突,我想更新3列同样,当我更新冲突列时,例如timek列,那么我需要检查新值是否小于旧值,并相应地选择是否需要使用旧值或新值。这是我的查询,但是会引发错误。我是Postgres SQL的新手,请提示出什么问题了?

INSERT INTO data_reports (pk1, pk2, dk1, dk2, dk3, timek, valuek)  VALUES (?, ?, ?, ?, ?, ?, ?)  
ON CONFLICT (pk1, pk2) DO UPDATE SET 
dk1 = EXCLUDED.dk1, 
dk2 = CASE WHEN (dk2 < EXCLUDED.dk2) THEN EXCLUDED.dk2 ELSE dk2 END), // I believe dk2 (existing value in DB) is not selected but how to do that
timek = CASE WHEN (timek < EXCLUDED.timek) THEN EXCLUDED.timek ELSE timek END);
k
  1. 您可以通过指定表名称来引用更新前的列值:例如data_reports.dk2
  2. 打开和关闭括号,分别为5 (s和7 )s。
  3. 以开头的评论--,或以/*括起评论*/
INSERT INTO data_reports (pk1,pk2,dk1,dk2,dk3,timek,valuek)
VALUES (1,1,9,9,9,9,9)
ON CONFLICT (pk1,pk2) DO
UPDATE
SET
    dk1 = EXCLUDED.dk1,
    dk2 =
    (CASE
        WHEN (data_reports.dk2 < EXCLUDED.dk2) THEN EXCLUDED.dk2
        ELSE data_reports.dk2
    END),
    timek =
    (CASE
        WHEN (data_reports.timek < EXCLUDED.timek) THEN EXCLUDED.timek
        ELSE data_reports.timek
    END);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更新MySQL时检查是否插入值

来自分类Dev

简单的PHP和SQL查询-更新值

来自分类Dev

更新SQL查询以获取多个值

来自分类Dev

在SQL Server更新查询后插入

来自分类Dev

检查字段值是否在SQL Server触发器上更新

来自分类Dev

检查新值是否与旧值相同

来自分类Dev

在插入之前检查列是否包含值 T-SQL

来自分类Dev

SQL查询是否不为空,则更新或保留相同数据

来自分类Dev

SQL查询是否不为空,则更新或保留相同数据

来自分类Dev

无法更新mongoDb本机findOneAndUpdate查询上的数据值

来自分类Dev

是否可以在同一sql查询中进行插入或更新?

来自分类Dev

需要在SQL Pivot查询上输入

来自分类Dev

在C#,SQL Server中执行查询时出错:尝试更新是否已存在值,否则插入

来自分类Dev

为什么在更新SQL查询中会影响不同的值?

来自分类Dev

如何使用ORM而不是原始SQL查询来更新值?

来自分类Dev

在提交错误值的 sql 中更新查询

来自分类Dev

如何使用子查询更新 SQL 中的多列值?

来自分类Dev

当前值和新值相同时,更新查询将受影响的行返回为0

来自分类Dev

Windows Azure在移动服务上的插入,查询,删除和更新

来自分类Dev

SQL Merge (with Temp Table) 在 SubQuery 上失败返回了 1 个以上的值(但我没有在更新中使用子查询..)

来自分类Dev

更新Redux中的旧值和新值

来自分类Dev

插入更新重复值SQL

来自分类Dev

PostgreSQL查询帮助:如何检查多个列的值是否同时在增加/减少

来自分类Dev

仅当其他表中的值相同时才插入新的 SQL 行

来自分类Dev

Kafka日志保留默认值的更新是否需要任何停机时间?

来自分类Dev

SQL Server在子查询上串联列的值

来自分类Dev

SQL Server在子查询上串联列的值

来自分类Dev

更新字典的值,检查Pandas Dataframe列上是否有新值

来自分类Dev

如何检查更新中的速度值是否已更改,然后设置新的速度值?

Related 相关文章

  1. 1

    更新MySQL时检查是否插入值

  2. 2

    简单的PHP和SQL查询-更新值

  3. 3

    更新SQL查询以获取多个值

  4. 4

    在SQL Server更新查询后插入

  5. 5

    检查字段值是否在SQL Server触发器上更新

  6. 6

    检查新值是否与旧值相同

  7. 7

    在插入之前检查列是否包含值 T-SQL

  8. 8

    SQL查询是否不为空,则更新或保留相同数据

  9. 9

    SQL查询是否不为空,则更新或保留相同数据

  10. 10

    无法更新mongoDb本机findOneAndUpdate查询上的数据值

  11. 11

    是否可以在同一sql查询中进行插入或更新?

  12. 12

    需要在SQL Pivot查询上输入

  13. 13

    在C#,SQL Server中执行查询时出错:尝试更新是否已存在值,否则插入

  14. 14

    为什么在更新SQL查询中会影响不同的值?

  15. 15

    如何使用ORM而不是原始SQL查询来更新值?

  16. 16

    在提交错误值的 sql 中更新查询

  17. 17

    如何使用子查询更新 SQL 中的多列值?

  18. 18

    当前值和新值相同时,更新查询将受影响的行返回为0

  19. 19

    Windows Azure在移动服务上的插入,查询,删除和更新

  20. 20

    SQL Merge (with Temp Table) 在 SubQuery 上失败返回了 1 个以上的值(但我没有在更新中使用子查询..)

  21. 21

    更新Redux中的旧值和新值

  22. 22

    插入更新重复值SQL

  23. 23

    PostgreSQL查询帮助:如何检查多个列的值是否同时在增加/减少

  24. 24

    仅当其他表中的值相同时才插入新的 SQL 行

  25. 25

    Kafka日志保留默认值的更新是否需要任何停机时间?

  26. 26

    SQL Server在子查询上串联列的值

  27. 27

    SQL Server在子查询上串联列的值

  28. 28

    更新字典的值,检查Pandas Dataframe列上是否有新值

  29. 29

    如何检查更新中的速度值是否已更改,然后设置新的速度值?

热门标签

归档