我有这两张桌子

 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

#1楼 票数: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

#2楼 票数: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;

  ask by mat656 translate from so

未解决问题?本站智能推荐:

2回复

左联接的group_concat太慢了

我有一个歌曲库和一个有效的查询,该查询连接了多个表并将所有song_id,song_title等返回到一个大表中,如下所示: 我想将具有多个人声/作曲家的歌曲合并为一行: 我是用group_concat()函数完成的,但是它太慢了。 没有group_concat,我的查询只需要
2回复

SQL帮助〜GROUP_CONCAT

我在SQL查询中合并Group_Concat函数时遇到问题。 我曾尝试使用PHP解决该问题,但我更希望使用SQL使其正确。 我的代码在下面,我正在使用最新版本的MYSQL。 理想情况下,我想在Author,Venue和Company上使用Group_Concat,但是我一直很难使它工
1回复

在 MySQL 上优化 SQL 中的 GROUP_CONCAT

有没有办法优化以下 SQL,使其运行得更快? 我遇到了 GROUP_CONCAT 的瓶颈,但我找不到通过使用替代方法或优化查询来使其运行得更快的方法。 目前在 2700 个条目(mysql 数据库 5.1.73,mysqli)上查询需要大约 3.2 秒。 所有表都在重要列上设置了索引。 因此,
1回复

SQL一请求加入表group_concat

我有这三个非常简单的表: 我想仅通过一个请求通过其ID加载用户,并得到如下结果: id = 1的示例: id = 2的示例: 我已经尝试过此请求: 但这输出(id = 1的示例): 但是,它在id = 2和id = 3时可以正常工作: (id
1回复

SQL join + group_concat 不返回一些行

在我的数据库中,我有以下表格: 我想加入所有的表来得到这样的东西: 我试着像这样加入 group_concat SELECT People.Name, group_concat(Colors.Color separator ", ") AS "Color", gr
1回复

sql中的Group_Concat多列

我有两张桌子。 第一个表叫做 Employee 第二个表称为 Employee_Sal_Changes 在我的前端表上,我想展示 我想将salary_change_history 和year 匹配到EID 并使用循环在前端显示它们。 为了获得这些,我尝试使用 group_concat 将它
1回复

在左联接中使用group_concat

我想我可能想对我的代码偷偷摸摸:p我正在尝试将2个表链接在一起,其中一个表包含1行,而另一个表则包含多个表。 但是我只想为第一个表返回一行,另一表返回。 因此,我尝试使用GROUP_CONCAT将我的GROUP_CONCAT更改为单行,如下所示: 然后,我可以将其分解。 我认为
1回复

GROUP_CONCAT 很奇怪

我在'user.ID'='email.ID' 和'user.ID'='telephone.ID' 上使用了三个带有内部连接的表。 每个用户都有一个名字和一个 ID。 每封电子邮件都有一个用户名、电子邮件地址本身和相应的用户 ID。 每个电话号码都有一个用户名、号码本身和相应的用户 ID。 用户可以