SQLITE:使用串联更新所有记录,但使用其中每行的信息

时间:2018-04-18 11:25:00

标签: sql sqlite

我有点麻烦。我正在尝试使用连接运算符更新所有记录,这允许我创建新字符串并使用新创建的字符串更新特定字段。事实上,它的工作部分是从记录1中选择数据并将其应用于我的所有记录!

我需要它使用该记录中的数据更新每条记录,而不仅仅是第一条记录。

表格布局:

trackpath|artistname|trackname

我返回的示例数据:

location/rihanna - work.mp3|rihanna|work
location/rihanna - work.mp3|james blunt|beautiful

预期数据:

location/rihanna - work.mp3|rihanna|work
location/james blunt - beautiful.mp3|james blunt|beautiful

更新声明:

update table set trackpath = (SELECT 'location/' || artistname || ' - ' || trackname from table || '.mp3')

P.s,我尝试在select语句中使用rowid = rowid,但结果相同!

1 个答案:

答案 0 :(得分:2)

如果希望子查询为不同的行返回不同的值,则必须使用correlated subquery并指定子查询中的数据如何与外部查询中的数据相关:

UPDATE MyTable
SET x = (SELECT ...
         FROM MyTable AS T2
         WHERE T2.id = MyTable.id);

但是,如果仅使用同一行中的值,则根本不需要子查询:

UPDATE MyTable
SET trackpath = 'location/' || artistname || ' - ' || trackname || '.mp3';