选择没有键列的行

时间:2015-01-05 02:19:53

标签: mysql

我正在尝试使用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;

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