Khu*_*eed 2 sql sqlite sql-update
我在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 |
Run Code Online (Sandbox Code Playgroud)
我正在尝试根据表Y中的记录编写查询以更新表X上的记录.更新的条件如下所示
update table_x
set table_x.c1 = 100,
table_x.c2 = table_y.c2
where table_x.id = table_y.id
Run Code Online (Sandbox Code Playgroud)
但是当我尝试这样做时,我收到一条错误消息
没有这样的列:table_y.c2
删除的答案对于错误的原因是正确的:在可以使用之前,必须在查询中引入关系标识符(例如,使用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)
Run Code Online (Sandbox Code Playgroud)
请注意,与正确UPDATE..JOIN的选择不同,如果子选择未能找到匹配,则将分配NULL.
因人而异.
| 归档时间: |
|
| 查看次数: |
2180 次 |
| 最近记录: |