我有一种情况,我有一个表(col1 (pk), col2, col3, col4)
和一组记录,我需要将它们插入到表中并在重复键上更新它们。我想做一个批处理查询来加快速度。但是,col4
没有NOT NULL
约束。当我想用记录更新时出现问题(val1, val2, val3, None), (val4, val5, val6, val7)
。对于第一条记录,我不希望更新第 4 列(如果(val1, val2, val3, val8)
存在于 DB 中,我不想覆盖 val8,因为 None 表示缺少值,而不是显式设置为 Null)。但是,对于第二条记录,我想更新col4
,因为传递了一个显式值。这对于我只需将更新列设置为col2, col3,
而不是的一条记录就可以了col4
,但我想批量处理这个查询并且需要col4
为它传递值时更新,当我没有值时不更新。我在逻辑上需要下面给出的东西。
INSERT INTO table1
(col1, col2, col3, col4)
VALUES
('val1', 'val2', 'val3'), ON DUP KEY UPDATE col2, col3
('val5', 'val6', 'val7', 'val8'), ON DUP KEY UPDATE col2, col3, col4
('val9', 'val10', 'val11') ON DUP KEY UPDATE col2, col3
显然,这可以通过使其成为一系列单独的语句来完成,但我想找到一种方法来批处理它。有什么方法可以在 sql 中完成此操作或其他方法吗?