繁体   English   中英

MySQL查询选择/连接concat错误

[英]MySQL query select/join concat error

执行此查询的正确方法是什么? 另外,我想从全名中删除空格,因为如果middle为空,它仍会返回其前后的空格。

SELECT first,middle,last, 
CONCAT(first,' ',middle,' ',last) AS fullname
FROM names a 
LEFT JOIN info b ON fullname = b.name
LIMIT 1

当前错误是: ERROR 1054 (42S22): Unknown column 'fullname' in 'on clause'

您面临的问题是您尝试在计算列上进行联接。

您需要首先计算子选择中的列,然后加入该“表”

就像是

SELECT  *
FROM    (
            SELECT  first,
                    middle,
                    last,  
                    CONCAT(first,' ',middle,' ',last) AS fullname 
            FROM    names 
        ) a  LEFT JOIN 
        info b  ON  fullname = b.name 
LIMIT 1 

您还可以查看中间空格的CASE语句

您不能在ON子句中使用别名。 尝试做

SELECT first,middle,last,
CONCAT(first,' ',middle,' ',last) AS fullname
FROM names a 
LEFT JOIN info b ON b.name=CONCAT(first,' ',middle,' ',last) 

“与ON一起使用的conditional_expr是可以在WHERE子句中使用的任何形式的条件表达式”(来自dev.mysql.com/doc/refman/5.1/en/join.html)。

因此,作为逻辑推断,不允许在ON子句中使用别名。

尝试这个:

从名称(CONCAT(first,'',middle,'',last)= b.name)的左连接信息b的名称中选择first,last,CONCAT(first,'',, middle,'',last)作为fullNAME

还有一件事,在您的选择查询中,您在最后一个之后跳过了逗号

尝试这个 ,

SELECT CONCAT(first,'',middle,'',last)AS全名FROM命名一个

左联接信息b

ON全名= b.name

限制1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM