【问题标题】:Can I copy data from one table to another in SQLite using a join condition?我可以使用连接条件在 SQLite 中将数据从一个表复制到另一个表吗?
【发布时间】: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


【解决方案1】:

你要的是UPDATEtable1

UPDATE table1
SET animal = (SELECT t2."Animal Type" FROM table2 t2 WHERE t2."ID number" = table1.ID);

请参阅demo
结果:

| animal | ID  |
| ------ | --- |
| Cat    | 1   |
| Bird   | 3   |

【讨论】:

    猜你喜欢
    • 2011-05-16
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2021-12-12
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多