我有这两个表
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
我还如何检索“强度”的值并得到如下结果:
Name | value | group_concat
intensity | 0 | NUll
status | 0 | off,on
答案 0 :(得分:0)
添加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
答案 1 :(得分:0)
您的查询格式不正确。您将未聚合的列与聚合的列混合在一起。 MySQL将其视为不带group by
的聚合查询-它仅返回一行。未汇总列的值来自不确定的行。
您应该在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;