我正在尝试使用concat选择具有不匹配/损坏的键列(ID)的匹配记录。
下面给出了错误Error Code: 1054. Unknown column 'samdb.songlist.album' in 'where clause'
SELECT
tmpsonglist.xfade
FROM
tmpsonglist
WHERE
(concat_ws('',tmpsonglist.album, tmpsonglist.genre) = concat_ws('',songlist.album, songlist.genre))
samdb.songlist.album
确实存在,我知道查询可以使用WHERE tmpsonglist.ID = songlist.ID
。
我可以这样使用concat吗?或者我是否需要有一个关键列来进行匹配?
编辑:
我已使用包含的别名更新了我的尝试,但仍然收到错误Error Code: 1093. You can't specify target table 'songlist' for update in FROM clause
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
AND filename LIKE '%201501.mp3');
SET SQL_SAFE_UPDATES=1;
答案 0 :(得分:0)
我的猜测是你想要的查询是:
UPDATE samdb.songlist s
SET s.xfade = (SELECT t.xfade
FROM tmpsonglist t
WHERE t.album = s.album AND filename LIKE '%201501.mp3'
);
请注意,如果没有匹配项,xfade
将根据您的逻辑设置为NULL
。