Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite使用来自另一个表中记录子集的条目更新表_Sql_Sqlite - Fatal编程技术网

SQLite使用来自另一个表中记录子集的条目更新表

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

我有以下两张桌子。“曲目”表没有艺术家/曲目名称(它们当前都为空)。我想用“名称”表中的艺术家名称和曲目名称更新“曲目”。“names”表有242416787条记录,tracks表有大约400万条记录。arist/音轨名称由音轨id关联,因此我只需要有音轨id的“名称”中的条目

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
;

此处提供了一个工作示例:

不更新。需要查找值时加入。