我有3张桌子:用户,相册,照片。用户可以拥有相册,每张专辑都有照片。
我想在表[照片]新列userId添加正确的数据。 我不仅要添加空的userId列,而且此列必须具有表相册中的值:userId。
我怎么能轻易做到这一点?
答案 0 :(得分:0)
有两个任务要做:
首先,将列添加到表中。
完成后,您将需要填充userId列。但是,在SQLite中,您无法在UPDATE语句中执行JOIN。
所以你应该分四个步骤(我假设你的照片表中只有3个字段,适应你的字段)。
首先创建一个包含最终数据的临时表
CREATE TABLE photos_temp (
id INTEGER PRIMARY KEY AUTOINCREMENT,
albumId INTEGER NOT NULL,
userId INTEGER NOT NULL
);
然后,填充临时表
INSERT INTO photos_temp(id, albumId, userId)
SELECT photos.id as id,
photos.albumId as albumId,
albums.userId as userId
FROM photos
INNER JOIN albums ON photos.albumId = albums.id;
然后,删除原始表
DROP TABLE photos;
最后,重命名上一个表
ALTER TABLE photos_temp RENAME TO photos;
抱歉,但没有更简单的方法。