SQL使用CONCAT字符串作为参数加入两个表
-
13-12-2019 - |
题
我需要从表2获取标题,表2具有标题和ID列。 表1具有一些数据,其中三列连接在一起构成可以在表1中找到的ID。
我使用了concat_ws()函数,并给出了别名的名称,需要使用别名进行论点(至少这是我理解的是我需要做的)
我认为这可能是一个简单的左加入,但它不适合我。
这是我的查询
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的结果,但是第二表返回null的aiv和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);
.
“您可以使用组中的别名,按顺序或具有子句来引用列”(来自dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html)。
和“与之使用的条件_ expr是可以在where子句(从dev.mysql.com/doc/refman/5.1/z/join.html)中使用的表单的任何条件表达式。
因此,您不允许在子句中使用别名。
其他提示
尝试使用子查询.. 它是这样的.........
前。
选择 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;
. 不隶属于 StackOverflow