2

我在 SQLite 中有两个表,看起来像这样

TABLE_X    
____________________
| id | C1 | C2 | C3 | C4 |
| 10 | 99 | 03 | 04 | 00 |
| 60 | 88 | 20 | 30 | 40 |


TABLE_Y
___________     
| id | C2 |
| 10 | 11 |
| 60 | 22 |

我正在尝试根据表 Y 中的记录编写查询以更新表 X 上的记录更新的条件类似于以下内容

update table_x
   set table_x.c1 = 100,
       table_x.c2 = table_y.c2
 where table_x.id = table_y.id

但是当我尝试这样做时,我收到一条错误消息说

没有这样的列:table_y.c2

4

1 回答 1

5

删除的答案关于错误原因是正确的:必须在查询中引入关系标识符(例如,使用 FROM/JOIN)才能使用它。

而SQLite不支持UPDATE..JOIN所以没办法直接引入查找关系),可以用一个依赖子查询来模拟效果:

update table_x
   set c1 = 100,
       c2 = (select y.c2 from table_y as y
             where y.id = table_x.id)

请注意,适当的 不同UPDATE..JOIN,如果子选择无法找到匹配项,则将分配 NULL。

YMMV。

于 2013-10-31T18:19:01.017 回答