假设我有两个表:
TB1:
id name date
1 John 01/01/2012
1 John 01/02/2012
2 James 02/02/2020
TB2:
id name date
1 John 01/01/2013
1 John 01/01/2012
tb1
和tb2
的唯一性来自于(id, name,date)
列的组合。因此,我希望只插入tb2
中对tb1
来说是新的值。在这种情况下,只插入(1,John,01/01/2013)
,因为另一行已经存在于tb1
中。
我的尝试是:
INSERT INTO tb1 (date) SELECT * FROM tb2 ON CONFLICT (id,name,date) DO NOTHING;
2条答案
按热度按时间xe55xuns1#
您没有告诉我们您遇到的错误是什么。但仅从语法检查来看,它将导致以下错误:
错误:INSERT的表达式多于目标列
因为您指定了一个目标列,但SELECT语句提供了三个列。
假设您在这三个数据行上指定了唯一的条件约束或主索引键,则在INSERT陈述式中加入其他数据行应该可以运作:
xzabzqsa2#
SQL语言是一种非过程语言,只是一种查询语言......您必须对查询执行此操作,例如: