从加入批量更新

时间:2012-10-03 02:04:27

标签: sql sqlite

我有两张桌子:

movies (id, votes)
info (id, movie_id, info_type, value)

我想用info.value填充movies.votes,其中movies.id = info.movi​​e_id和info_type = 3(这是投票的信息类型)

我无法弄明白该怎么做..(我正在使用SQLite3.7)

2 个答案:

答案 0 :(得分:1)

UPDATE movies
SET votes = (select value
             from info
             where info.movie_id=movies.id and info_type=3)
WHERE EXISTS 
            (select *
             from info
             where info.movie_id=movies.id and info_type=3)

仅供参考EXISTS,如果电影没有info数据,那么这些数据不会更新为NULL。如果您希望这样做,可以将其删除。

答案 1 :(得分:0)

看起来你想要做一个多表UPDATE,这在其他数据库中很简单,但根据the documentation看起来你不能在sqlite中做那些。

在mysql中,你会做UPDATE movies JOIN info on (info.movie_id = movies.id) SET votes = info.value WHERE info.info_type = 3之类的事情。我认为在sqlite中你必须单独选择所有的信息值并单独更新所有的电影记录。