我需要从表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;
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top