Sql 如何从另一个表插入更新的数据?
我有一个新表(称为“NewTable”),它是用两个表(t1和t2)中的数据创建的。我试图将t1和t2中的任何新数据插入“NewTable”。请参见下面的示例 新表格:Sql 如何从另一个表插入更新的数据?,sql,sql-server,sql-insert,Sql,Sql Server,Sql Insert,我有一个新表(称为“NewTable”),它是用两个表(t1和t2)中的数据创建的。我试图将t1和t2中的任何新数据插入“NewTable”。请参见下面的示例 新表格: id | col1 | col2 | col3 | col4 | t1: t2: 我的剧本是: INSERT NewTable (id, col1, col2, col3, col4) SELECT t1.d1, col1, col2, col3, col4 FROM NewTable left join t1 on NewT
id | col1 | col2 | col3 | col4 |
t1:
t2:
我的剧本是:
INSERT NewTable (id, col1, col2, col3, col4)
SELECT t1.d1, col1, col2, col3, col4
FROM NewTable left join t1 on NewTable.id = t1.id left join t2 on t1.id=t2.id
WHERE t1.id is NULL;
我收到了这个错误信息
Cannot insert the value NULL into column 'id', table 'New Table'; column does not allow nulls. INSERT fails.
我觉得我的剧本不对劲了。我应该使用右连接而不是左连接,还是应该改为“WHERE NewTable is NULL”
感谢您的帮助如果您想在
t1
和t2
的NewTable
行中插入与NewTable
中不存在的id
相同的行,则必须使用内部连接t1
和t2
,然后LEFT
加入NewTable
并返回不匹配的行:
INSERT INTO NewTable (id, col1, col2, col3, col4)
SELECT t1.id, t1.col1, t1.col2, t2.col3, t2.col4
FROM t1 INNER JOIN t2 ON t2.id = t1.id
LEFT JOIN NewTable ON NewTable.id = t1.id
WHERE NewTable.id IS NULL;
为什么需要将数据复制到新表中?为什么您认为SQL是错误的-发生了什么?是否使用Access查询设计器生成?我已更新我的问题。很抱歉将问题与您使用的数据库联系起来。非常感谢您的回答。我将复习答案作为练习!
Cannot insert the value NULL into column 'id', table 'New Table'; column does not allow nulls. INSERT fails.
INSERT INTO NewTable (id, col1, col2, col3, col4)
SELECT t1.id, t1.col1, t1.col2, t2.col3, t2.col4
FROM t1 INNER JOIN t2 ON t2.id = t1.id
LEFT JOIN NewTable ON NewTable.id = t1.id
WHERE NewTable.id IS NULL;