【问题标题】:How to do INSERT INTO updated data from another table?如何从另一个表插入更新数据?
【发布时间】:2020-08-07 04:44:09
【问题描述】:

我有一个新表(称为“NewTable”),它是使用 2 个表(t1 和 t2)中的数据创建的。我正在尝试将 t1 和 t2 中的任何新数据插入“NewTable”。请看下面的例子。

新表:

id | col1 | col2 | col3 | col4 |

t1:

id | col1 | col2 | col5 | col6 |

t2:

id | col3 | col4 | col7 | col8 |

我的脚本是:

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”?

感谢您的帮助

【问题讨论】:

  • 为什么需要将数据复制到新表中?为什么你认为 SQL 是错误的——会发生什么?您是否使用 Access 查询设计器进行构建?
  • 我已经更新了我的问题。很抱歉造成混乱
  • 用您使用的数据库标记问题。

标签: sql sql-server sql-insert


【解决方案1】:

如果您想将 t1t2 中的 id 插入到 NewTable 行中,而 NewTable 中尚不存在相同的 id,那么您必须使用 INNER 加入 t1t2,然后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;

【讨论】:

  • 非常感谢您的回答。我将作为练习回顾答案!
猜你喜欢
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-15
  • 1970-01-01
  • 2019-01-10
  • 1970-01-01
相关资源
最近更新 更多