标签: group-concat

MySQL中GROUP_CONCAT的反义词是什么?

我似乎反对这个问题很多,我的数据格式如下:

+----+----------------------+
| id | colors               |
+----+----------------------+
| 1  | Red,Green,Blue       |
| 2  | Orangered,Periwinkle |
+----+----------------------+
Run Code Online (Sandbox Code Playgroud)

但我希望它的格式如下:

+----+------------+
| id | colors     |
+----+------------+
| 1  | Red        |
| 1  | Green      |
| 1  | Blue       |
| 2  | Orangered  |
| 2  | Periwinkle |
+----+------------+
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?什么是这种操作甚至叫做?

mysql csv format pivot group-concat

28
推荐指数
2
解决办法
2万
查看次数

带有Null的MySQL GROUP_CONCAT

有没有选项让MySQL的Group_Concat函数包含空值?

请考虑源表中的以下示例:

userId, questionId, selectionId
7, 3, NULL
7, 4, 1
7, 5, 2
Run Code Online (Sandbox Code Playgroud)

当我使用GROUP_CONCAT查询选择表时,我得到以下内容:

7, 4=1,5=2
Run Code Online (Sandbox Code Playgroud)

我想得到以下内容:

7, 3=NULL,4=1,5=2
Run Code Online (Sandbox Code Playgroud)

作为参考,我的查询如下所示:

Select userId, GROUP_CONCAT(CONCAT(questionId, '=', selectionId))
From selection
Group by userId;
Run Code Online (Sandbox Code Playgroud)

我也试过像这样添加一个IFNULL:

Select userId, GROUP_CONCAT(IFNULL(CONCAT(questionId, '=', selectionId), 'NULL'))
From selection
Group by userId;
Run Code Online (Sandbox Code Playgroud)

但这产生了以下结果:

7, NULL,4=1,5=2
Run Code Online (Sandbox Code Playgroud)

注意 - 还有一个我忘了包含的复杂性.selectionId是另一个表的外键.我使用左外连接到selection_text表.我的真实查询包括该表中的字段(这些字段解析为NULL,因为selectionId为null).

mysql group-concat

24
推荐指数
2
解决办法
3万
查看次数

将一行连接到另一个表中的多行

我有一个表到实体(让我们称之为人)和属性(一个人可以有任意数量的属性).例如:

Name  Age
--------
Jane  27
Joe   36
Jim   16
Run Code Online (Sandbox Code Playgroud)

属性

Name   Property
-----------------
Jane   Smart
Jane   Funny
Jane   Good-looking
Joe    Smart
Joe    Workaholic
Jim    Funny
Jim    Young
Run Code Online (Sandbox Code Playgroud)

我想写一个有效的选择,根据年龄选择人,并返回他们的全部或部分属性.

Ex: People older than 26
Name Properties
Jane Smart, Funny, Good-looking
Joe Smart, Workaholic
Run Code Online (Sandbox Code Playgroud)

返回其中一个属性和总属性数也是可以接受的.

查询应该是高效的:人员表中有数百万行,属性表中有数十万行(因此大多数人没有属性).一次选择数百行.

有什么办法吗?

mysql sql database join group-concat

22
推荐指数
1
解决办法
5万
查看次数

在MySQL GROUP_CONCAT中订购,其中包含一个函数

我想在GROUP_CONCAT函数中对结果进行排序.问题是,GROUP_CONCAT函数中的选择是另一个函数,就像这样(幻想选择):

SELECT a.name,
    GROUP_CONCAT(DISTINCT CONCAT_WS(':', b.id, c.name) ORDER BY b.id ASC) AS course
FROM people a, stuff b, courses c
GROUP BY a.id
Run Code Online (Sandbox Code Playgroud)

我想得到一个结果(由b.id排序):

michael    1:science,2:maths,3:physics
Run Code Online (Sandbox Code Playgroud)

但我得到:

michael    2:maths,1:science,3:physics
Run Code Online (Sandbox Code Playgroud)

有谁知道我可以在我的group_concat中通过b.id订购?

mysql sql sql-order-by group-concat

21
推荐指数
1
解决办法
2万
查看次数

使用MySQL在不同字段上多个GROUP_CONCAT

我有这样的查询:

SELECT product.id,
       GROUP_CONCAT(image.id) AS images_id,
       GROUP_CONCAT(image.title) AS images_title,
       GROUP_CONCAT(facet.id) AS facets_id
...
GROUP BY product.id
Run Code Online (Sandbox Code Playgroud)

并且查询有效,但不是预期的,因为如果我有一个带有5个facet和1个图像的产品(假设id为7的图像),那么我在"images_id"中得到类似的东西:
"7,7,7, 7,7"
如果我有2张图像(7和3),那么我会得到类似的东西:
"7,7,7,7,7,3,3,3,3,3"
并且在方面我得到类似的东西:
" 8,7,6,5,4,8,7,6,5,4"

我认为MySQL正在对查询返回的不同行进行某种类型的并集,然后连接所有内容.

我的预期结果是(对于最后一个例子):

images_id ="7,3"
facets_id ="8,7,6,5,4"

我可以在GROUP_CONCAT中使用DISTINCT获得它,但后来我有另一个问题:如果我有两个具有相同标题的图像,其中一个是ommited,然后我得到类似的东西:
images_id ="7,3,5"
images_title ="Title7and3,Title5"

所以我想念images_id和images_title之间的关系.

有人知道是否有可能在MySQL中进行此查询?

也许我在没有任何实际好处的情况下使一切变得复杂.我试图只执行一个查询,因为性能,但现在我不太确定它是否更快执行两个查询(一个用于选择构面,另一个用于图像).

请解释一下您认为最佳解决方案是什么以及为什么.

谢谢 !

mysql group-concat

21
推荐指数
3
解决办法
2万
查看次数

如何在没有输入数据时阻止GROUP_CONCAT创建结果?

给出以下MySQL查询:

SELECT
  `show`.`id`
  , GROUP_CONCAT( `showClips`.`clipId` ORDER BY `position` ASC ) AS 'playlist'
FROM
  `show`
  INNER JOIN
    `showClips`
      ON
        ( `show`.`id` = `showClips`.`showId` )
;
Run Code Online (Sandbox Code Playgroud)

我想从数据库中检索所有"节目"的列表,包括包含"剪辑"的ID.

只要表中有条目,这样就可以正常工作show.对于这个问题,我们假设所有表都是空的.

GROUP_CONCAT将返回NULL并因此强制一行进入结果(仅包含NULL值).

然后我的应用程序会认为存在一个显示/结果.但结果将无效.这当然可以检查,但我觉得这可以(并且应该)在查询中已经被阻止了.

mysql group-concat

20
推荐指数
2
解决办法
8679
查看次数

MySQL中group_concat_max_len的最大允许量是多少?

我使用group_concat将很多行连接成一个.

我使用以下方法将group concat设置为10000:

SET group_concat_max_len = 10000;
Run Code Online (Sandbox Code Playgroud)

但即便如此,我的输出单元仍然不完整,最终以...结束

我尝试设置group_concat_max_len = 20000甚至没有帮助.

我也尝试将group_concat_max_len设置为99999999.它仍然无法完成输出文本.我检查了长度= 230个字符的组连续停止之一然后给...

还有其他方法吗?

mysql group-concat mysql-workbench

17
推荐指数
2
解决办法
4万
查看次数

使用LINQ将多行连接成单行(CSV属性)

我正在寻找LINQ等效于Sybase的LIST()或MySQL的group_concat()

它会转换:

User  Hobby
--------------
Bob   Football 
Bob   Golf 
Bob   Tennis 
Sue   Sleeping 
Sue   Drinking
Run Code Online (Sandbox Code Playgroud)

至:

User  Hobby
--------------
Bob   Football, Golf, Tennis 
Sue   Sleeping, Drinking
Run Code Online (Sandbox Code Playgroud)

linq csv group-concat linq-group

16
推荐指数
3
解决办法
3万
查看次数

使GROUP_CONCAT查询更有效

我有以下查询.这个想法是,它让我知道什么groups,然后users,可以访问每个component_instance.我想知道是否有更好的方法来执行此操作,因为查询速度很慢,但每次处理此表时都有这些额外的列非常方便:

SELECT component_instances.*, 
GROUP_CONCAT(DISTINCT IF(permissions.view, groups.id, NULL)) AS view_group_ids,
GROUP_CONCAT(DISTINCT IF(permissions.edit, groups.id, NULL)) AS edit_group_ids,
GROUP_CONCAT(DISTINCT IF(permissions.view, users.id, NULL)) AS view_user_ids,
GROUP_CONCAT(DISTINCT IF(permissions.edit, users.id, NULL)) AS edit_user_ids
FROM `component_instances`
LEFT OUTER JOIN permissions ON permissions.component_instance_id = component_instances.id
LEFT OUTER JOIN groups ON groups.id = permissions.group_id
LEFT OUTER JOIN groups_users ON groups_users.group_id = groups.id
LEFT OUTER JOIN users ON users.id = groups_users.user_id
GROUP BY component_instances.id
ORDER BY (case when component_instances.ancestry is null then 0 else …
Run Code Online (Sandbox Code Playgroud)

mysql group-by ruby-on-rails group-concat

16
推荐指数
1
解决办法
1553
查看次数

Django中的GROUP_CONCAT等价物

说我有下面的表格fruits:

id | type   | name
-----------------
 0 | apple  | fuji
 1 | apple  | mac
 2 | orange | navel
Run Code Online (Sandbox Code Playgroud)

我的目标是最终得到一个不同types的逗号和逗号分隔的列表names:

apple, 2, "fuji,mac"
orange, 1, "navel"
Run Code Online (Sandbox Code Playgroud)

这可以GROUP_CONCAT在MySQL中轻松完成,但我遇到了与Django等效的问题.这是我到目前为止,但我错过了GROUP_CONCAT这些东西:

query_set = Fruits.objects.values('type').annotate(count=Count('type')).order_by('-count')
Run Code Online (Sandbox Code Playgroud)

我想尽可能避免使用原始SQL查询.

任何帮助将不胜感激!

谢谢!=)

mysql django group-concat

15
推荐指数
4
解决办法
8529
查看次数