我有点麻烦。我正在尝试使用连接运算符更新所有记录,这允许我创建新字符串并使用新创建的字符串更新特定字段。事实上,它的工作部分是从记录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,但结果相同!
答案 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';