计算表中的新列

时间:2013-11-18 22:56:20

标签: android sqlite

我有3张桌子:用户,相册,照片。用户可以拥有相册,每张专辑都有照片。 enter image description here

我想在表[照片]新列userId添加正确的数据。 我不仅要添加空的userId列,而且此列必须具有表相册中的值:userId。

我怎么能轻易做到这一点?

1 个答案:

答案 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;

抱歉,但没有更简单的方法。