SQL如何执行现有行的条件批量更新

时间:2017-11-30 22:16:17

标签: sql postgresql spring-boot

如何在BATCH插入中添加条件。我正在使用如下的语句将数据插入表中。

INSERT INTO table   (id, date1,date2 ) SELECT ?, ?, ?  WHERE NOT EXISTS (SELECT 1 FROM table WHERE id= ? and COALESCE (date1::timestamp = ?))

以上INSERT将始终在所有列中添加条目。有什么办法我可以有条件地进入表格。例如,如果date1和id已经存在,我想只插入date2。目标是不更新date1(如果已存在)。

1 个答案:

答案 0 :(得分:1)

以下是我对您的问题的理解:您希望更新“表格”中的现有行。在哪里' table'列的值为“id'和' date1'。您要进行的更新是在列' date2'中添加日期。

这会将当前日期添加到' date2'无论在哪里' id'和' date1'已经填写完毕:

UPDATE table 
SET date2 = getdate()
WHERE id IS NOT NULL 
    AND date1 IS NOT NULL 

在这里,您可以将date2设置为您想要的任何内容。如果您需要来自其他表的日期,则可以通过仅将该行更改为

来获取该日期
SET date2 = (SELECT datecolumn FROM othertable WHERE ...)