0

为什么这种构造在 SQLite 中不起作用:

UPDATE table1 SET column1 = (SELECT column2 FROM table2);

其中 column1 和 column2 具有相同的行数和相同的类型。

4

6 回答 6

1

使用公共列查找匹配记录:

UPDATE table1
SET column1 = (SELECT column2
               FROM table2
               WHERE table2.Name = table1.Name)
于 2013-07-25T14:05:10.433 回答
0

它不会起作用,因为 table1.column1 只需要一个值。您实际上在做的是设置 table1.column1 = table2.column2 的所有结果。

您可能必须在一个公共列或键上将两个表连接在一起

于 2013-07-25T13:50:48.067 回答
0

因为嵌套选择可能返回不止一行。您尝试将 table2 中的所有数据放入 table1 中的 1 个元素中

于 2013-07-25T13:51:02.113 回答
0

Column1 是否只是在整个列中获得相同的值?否则,您需要在此处的更新中进行 JOIN,并根据连接设置 Column1 = Column2。

于 2013-07-25T13:52:48.543 回答
0

您没有链接这两个表,因此它试图将所有 column2 值放入每个 table1 行中。

用一个字段将两者链接在一起,例如 Update table1 set column1 = column2 from table2 where table1.ColumnA = tables2.ColumnA

于 2013-07-25T13:53:50.500 回答
0

您的语句不起作用的原因是因为您告诉它将所有值放入table1 中的column2每个单元格中。column1你想要更多类似的东西:

UPDATE
    table1
SET
    table1.column1 = table2.column2
FROM
    table1
INNER JOIN
    table2
ON
    table1.id = table2.table1_id
于 2013-07-25T13:53:54.660 回答