我收到了以下MySQL的错误。
Error Code: 1093. You can't specify target table 'songlist' for update in FROM clause
我认为我需要使用内连接,但似乎无法使用嵌套在select语句中的WHERE子句。有什么想法吗?
SET SQL_SAFE_UPDATES=0;
UPDATE samdb.songlist
SET
songlist.xfade = (SELECT
t.xfade
FROM
tmpsonglist AS t,
songlist AS s
WHERE
t.album = s.album)
WHERE
filename LIKE '%201501.mp3';
SET SQL_SAFE_UPDATES=1;
只要xfade
字段以songlist
结尾(基于以下内容),所需的结果就是使用tmpsonglist
更新filename
中201501.mp3
的列值一个共同的album
字段。
答案 0 :(得分:0)
尝试以下方法:
SET SQL_SAFE_UPDATES=0;
UPDATE samdb.songlist AS s
INNER JOIN samdb.tmpsonglist AS t
ON t.album = s.album
SET
s.xfade = t.xfade
WHERE
s.filename LIKE '%201501.mp3';
SET SQL_SAFE_UPDATES=1;
您不需要嵌套查询,因为连接涉及要更新的表。您只需使用内部联接,并使用引用仅更新所需的表。