[英]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.