【发布时间】:2017-06-06 14:47:56
【问题描述】:
我有以下两张表。 'tracks' 表没有艺术家/曲目名称(它们当前都是 NULL)。我想用“名称”表中的艺术家名称和轨道名称更新“轨道”。 'names' 表有 242,416,787 条记录,tracks 表有大约 400 万条记录。艺术家/曲目名称由 track_id 关联,因此我只希望条目来自我拥有 track_ids 的“名称”。
CREATE TABLE tracks (
s3_url VARCHAR(128),
track_id INTEGER KEY,
cluster_id INTEGER KEY,
rank INTEGER KEY,
group_id VARCHAR(128),
artist_name VARCHAR(128),
track_name VARCHAR(128),
set_name VARCHAR(128),
file_size INTEGER KEY);
CREATE TABLE names (
artist_name VARCHAR(128),
track_name VARCHAR(128),
track_id INTEGER KEY,
album_name VARCHAR(128));
这是我目前所拥有的,这让我得到了我拥有 track_ids 的“名称”中的记录:
SELECT names.artist_name, f.track_id FROM names INNER JOIN tracks AS f ON names.track_id=f.track_id
我不知道如何将这些结果填回到“曲目”表中。我正在尝试以下效果:
UPDATE x SET artist_name=SELECT names.artist_name, f.track_id FROM names INNER JOIN tracks AS f ON names.track_id=f.track_id) AS x;
这些线程here、and here 完成类似的事情并表明SQLite 不支持JOIN/UPDATE。
所需的最终结果是使用“names”中的艺术家名和曲目名填充“曲目”中的所有条目。
【问题讨论】:
-
不要更新。当您需要查找值时加入。