【发布时间】:2020-06-02 09:43:05
【问题描述】:
我正在尝试使用跨两个表的不同集合列中的匹配数据将数据从一个 SQLite 表复制到另一个表中。第二个表的列名中有空格和大写字母。
INSERT INTO table1(column1)
SELECT "Column 2"
FROM table2
INNER JOIN table2
ON table1.column3 = table2."Column 4";
表 1 中的第 3 列和表 2 中的第 4 列应匹配,以便从表 2 中选择并复制到表 1 中的数据位于右侧行中。我收到一条错误消息,上面的代码显示列名不明确:第 2 列。关于如何移动此数据同时确保表 2 中的数据进入表 1 的正确行的任何建议?
样本数据:
table1
column1(动物):空,空
column3 (id):ID 1,ID 3
table2
第 2 列(动物类型):猫、狗、鸟
第 4 列(ID 号):ID 1、ID 2、ID 3
期望的结果:
table1
第 1 列(动物):猫、鸟
column3 (id):ID 1,ID 3
table2
没有变化
谢谢!
【问题讨论】:
-
用表名限定“列 2”:
SELECT table2."Column 2" -
还有,应该是:
FROM table1 INNER JOIN table2 -
感谢您的快速回复。我按照您的建议尝试了以下操作,但它似乎没有按预期工作。我不再收到错误消息,但它与两个表中的数据不正确匹配。例如,它已将 1803 行插入到 table1 中,以获得仅出现在 table2 中的 138 行中的值。根据连接条件,这些似乎都不匹配(在第 1 列中都有空值)。 INSERT INTO table1(column1) SELECT table2."Column 2" FROM table1 INNER JOIN table2 ON table1.column3 = table2."Column 4";
-
使用两个表格的样本数据和预期结果编辑您的问题。
-
我现在已经添加了示例数据和预期结果,谢谢!
标签: sqlite join sql-insert