为什么这种构造在 SQLite 中不起作用:
UPDATE table1 SET column1 = (SELECT column2 FROM table2);
其中 column1 和 column2 具有相同的行数和相同的类型。
使用公共列查找匹配记录:
UPDATE table1
SET column1 = (SELECT column2
FROM table2
WHERE table2.Name = table1.Name)
它不会起作用,因为 table1.column1 只需要一个值。您实际上在做的是设置 table1.column1 = table2.column2 的所有结果。
您可能必须在一个公共列或键上将两个表连接在一起
因为嵌套选择可能返回不止一行。您尝试将 table2 中的所有数据放入 table1 中的 1 个元素中
Column1 是否只是在整个列中获得相同的值?否则,您需要在此处的更新中进行 JOIN,并根据连接设置 Column1 = Column2。
您没有链接这两个表,因此它试图将所有 column2 值放入每个 table1 行中。
用一个字段将两者链接在一起,例如 Update table1 set column1 = column2 from table2 where table1.ColumnA = tables2.ColumnA
您的语句不起作用的原因是因为您告诉它将所有值放入table1 中的column2
每个单元格中。column1
你想要更多类似的东西:
UPDATE
table1
SET
table1.column1 = table2.column2
FROM
table1
INNER JOIN
table2
ON
table1.id = table2.table1_id