SQL group_concat 删除左连接

SQL group_concat remove left join

我有这两张表

 FunctionName | value
 -------------+---------
 intensity    |  0
 status       |  NULL

 FunctionName | StatusName 
 -------------+------------
 status       |  ON        
 status       |  Off         

我正在使用这个查询:

SELECT 
    Functions.FunctionName, Functions.value,
    GROUP_CONCAT(FunctionsWithStatus.StatusName)
FROM
    Functions
LEFT JOIN
    FunctionsWithStatus ON Functions.FunctionName = FunctionsWithStatus.Functionsname

结果是:

Name   | value | group_concat
status | 0     | off,on

我怎样才能同时检索 "intensity" 的值并得到如下结果:

Name      | value | group_concat
intensity |  0    |  NUll
status    |  0    | off,on

添加 Group by 应该可以完成工作:

SELECT Functions.FunctionName,Functions.value,group_concat(FunctionsWithStatus.StatusName)
from  Functions
left join  FunctionsWithStatus on Functions.FunctionName = FunctionsWithStatus.Functionsname
Group by Functions.FunctionName

您的查询格式不正确。您将未聚合列与聚合列混合在一起。 MySQL 将其视为没有 group by 的聚合查询 - returns 正好是一行。未聚合列的值来自 不确定 行。

您应该在 group by 中包含所有未聚合的列(这不仅是个好主意,而且是标准的 SQL):

select f.FunctionName, f.value, group_concat(fws.StatusName)
from Functions f left join
     FunctionsWithStatus fws
     on f.FunctionName = fws.Functionsname
group by f.FunctionName, f.value;