Concat 문자열을 인수로 사용하여 두 개의 테이블에 대한 SQL 왼쪽 가입
-
13-12-2019 - |
문제
표 2에서 제목을 가져와야합니다. 표 2에는 제목 및 ID 열이 있습니다. 표 1에는 일부 데이터가 있고, 이들 열 중 3 개가 함께 Concatenated Makeup을 표 1에서 찾을 수 있습니다.
Concat_WS () 함수를 사용 하고이 열을 별칭 이름으로 지정하고 on 인수에 대한 별칭을 사용할 필요가 있습니다 (적어도 이것은 내가해야 할 일이 필요로하는 것)
이것은 이것이 단순한 왼쪽 가입 일 수 있다고 생각했지만, 그것은 나에게 일하지 않습니다.
내 쿼리
입니다SELECT
table_openers.mail,
table_openers.f_name,
table_openers.l_name,
table_openers.Quality,
CONCAT_WS('-',
table_openers.esp,
table_openers.acc,
table_openers.group) as 't1aid',
table_groups.aid,
table_groups.group_name
FROM
lance_mailstats.table_openers
LEFT JOIN
lance_mailstats.table_groups ON table_groups.aid = t1aid;
.
메일, f_name, l_name, 품질 및 t1aid에 대한 결과가 발생했지만 두 번째 테이블의 AID 및 group_name 열은 null을 반환합니다.
해결책
ON 절에서 별칭을 사용할 수없는 것처럼 느껴집니다.
를 시도하십시오LEFT JOIN
lance_mailstats.table_groups ON table_groups.aid = CONCAT_WS('-',
table_openers.esp,
table_openers.acc,
table_openers.group);
.
"그룹의 별칭을 그룹별로 사용할 수 있습니다.
및 "On과 함께 사용 된 conditional_expr은 dev.mysql.com/doc/refman/5.1/ko/join.html에서 사용할 수있는 양식의 조건부 표현식입니다.
논리적 인 추론을 사용하여 조항에 별칭을 사용할 수 없습니다.
다른 팁
하위 쿼리를 사용해보십시오. .. 그것은 이렇게됩니다 .........
ex.
선택 tbl1.mail, tbl1.f_name, tbl1.l_name, tbl1.quality, tbl1.t1aid, table_groups.aid, table_groups.group_name
FROM
(SELECT
table_openers.mail,
table_openers.f_name,
table_openers.l_name,
table_openers.Quality,
CONCAT_WS('-',
table_openers.esp,
table_openers.acc,
table_openers.group) as 't1aid',
FROM
lance_mailstats.table_openers )tbl1
LEFT JOIN
lance_mailstats.table_groups ON table_groups.aid = tbl1.t1aid;
.