我有2個表:大規模更新,從加入
movies (id, votes)
info (id, movie_id, info_type, value)
我想填充info.value,movies.votes其中movies.id = info.movie_id和資訊類型= 3(這是您的信息類型票)
我無法弄清楚如何做到這一點。(我使用SQLite3.7)
我有2個表:大規模更新,從加入
movies (id, votes)
info (id, movie_id, info_type, value)
我想填充info.value,movies.votes其中movies.id = info.movie_id和資訊類型= 3(這是您的信息類型票)
我無法弄清楚如何做到這一點。(我使用SQLite3.7)
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
。如果您希望發生這種情況,可以將其刪除。
它看起來像你想要做一個多表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中,你必須單獨選擇所有的信息值,並單獨更新所有的電影記錄。
雖然這是非常緩慢..這是正常的嗎?每列都有一個索引..有幾十萬,所以也許這是正常的。 – luca
你正在使用SQLite爲一個有幾十萬行的表?不幸的是,由於缺乏對從聯接更新的支持,這將會很糟糕。 – RichardTheKiwi