-1
concat을 사용하여 일치하지 않는/손상된 키 열 (ID)이있는 일치하는 레코드를 선택하려고합니다.키 열이없는 행 선택
아래는 나에게
SELECT
tmpsonglist.xfade
FROM
tmpsonglist
WHERE
(concat_ws('',tmpsonglist.album, tmpsonglist.genre) = concat_ws('',songlist.album, songlist.genre))
samdb.songlist.album
Error Code: 1054. Unknown column 'samdb.songlist.album' in 'where clause'
실제로 존재 않는 오류를 제공, 나는 쿼리가 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;
이 쿼리와 관련해서는 존재하지 않습니다. 테이블 별명은'from' 절에 정의되어 있지 않으므로'songlist'는 인식되지 않습니다. –
아, 별칭이 필요한지 궁금했는데 오류가 아니 었습니다. 별칭 '은 나에게 새롭다 :) ID 열을 사용하면 어떻게 정상적으로 좋은 결과를 얻을 수 있을까? –
일반적으로 ID 필드는 a) 대개 키 또는 기본 키가 있고 b) 키를 결합 할 때 키를 사용할 수 있기 때문에 가장 잘 작동합니다. 필드 (concat_ws)를 사용하여 질문하는 것처럼 표현식에 참여하면 키를 사용할 수 없으므로 쿼리가 훨씬 느려집니다. – Tom