SQL

根据另一个表中的数据更新SQLite表

发布于 2021-05-10 20:34:13

我在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

关注者
0
被浏览
50
1 个回答
  • 面试哥
    面试哥 2021-05-10
    为面试而生,有面试问题,就找面试哥。

    删除的答案关于错误的原因是正确的:必须在查询中 引入 关系标识符(例如,使用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将被分配。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看