SQLite更新表,包含来自另一个表中的记录子集的条目

时间:2017-06-06 01:34:45

标签: sql sqlite

我有以下两张表。 'tracks'表没有艺术家/曲目名称(thery当前都是NULL)。我想用'names'表中的artist_name和track_name更新'tracks'。 'names'表有242,416,787条记录,track表有大约4百万条记录。 arist / track名称由track_id关联,因此我只希望条目形成'names',我有track_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));

这是我到目前为止的内容,这让我得到了'track'中记录的跟踪记录:

SELECT names.artist_name, f.track_id FROM names INNER JOIN tracks AS f ON names.track_id=f.track_id

我无法弄清楚如何将这些结果反馈到'track'表中。我正在尝试以下方面的效果:

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;

这些线程hereand here完成类似的事情,并表明SQLite不支持JOIN / UPDATE。

所需的最终结果是使用artist_name填充'tracks'中的所有条目,并使用'names'填充track_name。

1 个答案:

答案 0 :(得分:0)

试试这个:

<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerDropDownItemStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="none"
android:minHeight="?android:attr/listPreferredItemHeight" />

此处提供了一个工作示例:http://sqlfiddle.com/#!5/573148/1