Sql 如何从另一个表插入更新的数据?

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

我有一个新表(称为“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 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;