SQLite使用来自另一个表中记录子集的条目更新表
我有以下两张桌子。“曲目”表没有艺术家/曲目名称(它们当前都为空)。我想用“名称”表中的艺术家名称和曲目名称更新“曲目”。“names”表有242416787条记录,tracks表有大约400万条记录。arist/音轨名称由音轨id关联,因此我只需要有音轨id的“名称”中的条目SQLite使用来自另一个表中记录子集的条目更新表,sql,sqlite,Sql,Sqlite,我有以下两张桌子。“曲目”表没有艺术家/曲目名称(它们当前都为空)。我想用“名称”表中的艺术家名称和曲目名称更新“曲目”。“names”表有242416787条记录,tracks表有大约400万条记录。arist/音轨名称由音轨id关联,因此我只需要有音轨id的“名称”中的条目 CREATE TABLE tracks ( s3_url VARCHAR(128), track_id INTEGER KEY, cluster_id INTEGER KE
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));
这是我到目前为止所拥有的,这让我获得了“名称”中的记录,我有跟踪ID:
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;
这些线程可以完成类似的任务,并表明SQLite不支持连接/更新
所需的最终结果是使用“名称”中的艺术家名称和曲目名称填充“曲目”中的所有条目。尝试以下操作:
replace into tracks
(rowid, s3_url, track_id, cluster_id, rank, group_id, artist_name, track_name, set_name, file_size)
select
t.rowid, t.s3_url, t.track_id, t.cluster_id, t.rank, t.group_id, n.artist_name, n.track_name, t.set_name, t.file_size
from names n
inner join tracks t on n.track_id = t.track_id
;
此处提供了一个工作示例:不更新。需要查找值时加入。