标签: group-concatenation

为什么将 `group_concat_max_len` 设置为低于最大值?

Ubuntu 12.04 上的 MySQL 5.5.28

如果结果比group_concat_max_len那么长,则结果将被优雅地截断。

目前我有一个脚本试图提前检查所需的长度并将其设置group_concat_max_len为足够大。

但是检查会增加额外的查询。仅设置group_concat_max_len为最大值有什么缺点吗?好处是查询更少。

mysql group-concatenation

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

在单个结果中连接一对多字段?

假设我有以下查询:

SELECT * 
FROM AppDetails, AppTags 
WHERE AppDetails.AppID = '1' 
  AND AppDetails.AppID = AppTags.AppID
Run Code Online (Sandbox Code Playgroud)

这给出了以下结果:

AppID    AppName        AppType    Tag
1        Application1   Utility    Test1
1        Application1   Utility    Test2
1        Application1   Utility    Test3
Run Code Online (Sandbox Code Playgroud)

如何修改查询以返回如下内容:

AppID    AppName        AppType    Tags
1        Application1   Utility    Test1,Test2,Test3
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 join syntax group-concatenation

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

group_concat 和 group by 在一起

我正在尝试使用group_concat,concat和其他函数编写查询,但我陷入困境,无法加入和分组数据以在 1 个单元格中表示它们。

这是我的数据如何...

table1
+-----+---------+
| id  | ...     |
+-----+---------+
| 1   |         |
| 2   |         |
| 3   |         |
+-----+---------+
table2
+-----+-----+-------+
| id  | env | infid |
+-----+-----+-------+
| 1   | p   | 10    |
| 1   | p   | 11    |
| 1   | p   | 20    |
| 1   | p   | 12    |
| 1   | D   | 21    |
| 1   | D   | 22 …
Run Code Online (Sandbox Code Playgroud)

mysql group-by group-concatenation

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

带有 WHERE 子句的多个“GROUP_CONCAT”

在表中作为

id    name      type           info
1     BMW       car            yes
2     Reno      car            no
3     IBM       electronics    no
4     Sony      electronics    yes
5     Mazda     car            yes
Run Code Online (Sandbox Code Playgroud)

GROUP_CONCAT用来获取每个的列表type,但我想将连接的列分隔为按列分类的多个列info。它应该是这样的

SELECT type,
       GROUP_CONCAT(name) ORDER BY id ASC SEPARATOR ' ') AS list_with_info
       GROUP_CONCAT(name) ORDER BY id ASC SEPARATOR ' ') AS list_without_info
       FROM table1 GROUP BY type
Run Code Online (Sandbox Code Playgroud)

如何引入WHERE子句或使用其他方法返回多个连接列?

mysql select group-by group-concatenation

6
推荐指数
1
解决办法
4万
查看次数

将行连接成单个字符串查询,运行 5 小时并计数

我有一张有 260 万条记录的表。它看起来像这样:

email                           prject_name
rafael.nadal@xyz.com              lab1
rafael.nadal@xyz.com              lab2
rafael.nadal@xyz.com              lab3
TEST@TEST.COM                     shift1
TEST@TEST.COM                     shift2
Run Code Online (Sandbox Code Playgroud)

但我希望我的桌子看起来像这样:

email                     project_name
rafael.nadal@xyz.com     lab1, lab2, lab3
TEST@TEST.COM            shift1, shift2, shift3
Run Code Online (Sandbox Code Playgroud)

我用过这个查询

select distinct email ,
STUFF((Select ','+project_name
from dbo.[UMG sent 2016] as  T1
where T1.email=T2.email
FOR XML PATH('')),1,1,'') from dbo.[UMG sent 2016] as T2;
Run Code Online (Sandbox Code Playgroud)

它已经运行了5个小时。
如何加快流程?

sql-server t-sql group-concatenation

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

MySQL - GROUP_CONCAT 返回重复数据,不能使用 DISTINCT

我有一个规范化的数据库,我正在尝试使用 JOIN 和 GROUP_CONCAT 从多个表中返回数据。

问题:使用 GROUP_CONCAT 复制行。我不能使用 DISTINCT,因为某些数据(成分制造商)确实需要复制。

这是我当前的查询和数据库结构(SQL Fiddle):

SELECT recipe.*, 
GROUP_CONCAT(recipe_detail.ingredient_id) AS iid,  
GROUP_CONCAT(ingredient.name) AS iname, 
GROUP_CONCAT(ingredient_mfr.abbr) AS mabbr, 
GROUP_CONCAT(recipe_tag.name) AS tag
FROM  recipe
LEFT JOIN recipe_detail
    ON recipe.id = recipe_detail.recipe_id
LEFT JOIN ingredient
    ON recipe_detail.ingredient_id = ingredient.id
LEFT JOIN ingredient_mfr
    ON ingredient.mfr_id = ingredient_mfr.id
LEFT JOIN recipe_tagmap
    ON recipe.id = recipe_tagmap.recipe_id
LEFT JOIN recipe_tag
    ON recipe_tagmap.tag_id = recipe_tag.id
WHERE recipe.user_id = 1
GROUP BY recipe.id

recipe
+------------+------------+-----------+
|    id      |    name    |  user_id  | …
Run Code Online (Sandbox Code Playgroud)

mysql join duplication group-concatenation

4
推荐指数
1
解决办法
4825
查看次数

将 JOIN 添加到 GROUP_CONCAT()

我有一个主要是静态目标的表格,另一个用于跟踪用户完成这些目标的情况。他们可以将完成与在另一个表格和/或文本注释中输入的一个或多个记录相关联。我想将所有这些一起格式化为一个条目以显示在表格中(即每个目标一行)。

下面是一个Completion可能看起来像的示例:

ID    userID    objectiveID    recordID    text
1     4         8              500         NULL
2     4         8              NULL        "Lorem ipsum..."
3     4         8              750         NULL
Run Code Online (Sandbox Code Playgroud)

我已经走了这么远:

SELECT objectiveID,
   GROUP_CONCAT(recordID SEPARATOR ',') AS records,
   GROUP_CONCAT(text SEPARATOR ',') AS text
FROM Completion AS c
GROUP BY objectiveID;
Run Code Online (Sandbox Code Playgroud)

返回:

objectiveID    records    text
8              "500,750"  "Lorem ipsum..."
Run Code Online (Sandbox Code Playgroud)

然而,我实际上想要显示的是被引用的代码的属性recordID......假设这是Record表:

ID    userID    codeID
500   4         1111
750   4         2222
Run Code Online (Sandbox Code Playgroud)

这是Code表:

ID    description
1111  dolor
2222  sit amet
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

objectiveID    records …
Run Code Online (Sandbox Code Playgroud)

mysql join group-concatenation

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

查询每月有 group_concat 和 group by 需要帮助

我被困在一个连接表查询上,每月显示涉及 GROUP BY 和 GROUP_CONCAT 的数据。

这是一个简单的客户端表(本文底部的 DDL 和 DML):

id | Name
1  | Sony
2  | Toshiba
3  | Apple
4  | LG
5  | Uco
Run Code Online (Sandbox Code Playgroud)

然后是事件表

id | client_id | date_start
1 | 1 | 2017-01-12 18:44:42
2 | 1 | 2017-01-13 18:44:42
3 | 1 | 2017-01-14 18:44:42
4 | 1 | 2017-02-12 18:44:42
5 | 1 | 2017-03-12 18:44:42
6 | 1 | 2017-07-12 18:44:42
7 | 2 | 2017-02-12 18:44:42
8 | 2 | …
Run Code Online (Sandbox Code Playgroud)

mysql pivot group-by group-concatenation

4
推荐指数
1
解决办法
3590
查看次数

如何使用 GROUP BY 以连接一列中的数据,但筛选另一列中的特定数据的方式

我正在运行 SQL Server 2014

我有一个看起来像这样的表:

 ID   | Name | AddressType | Address       | Features
 ========================================================
 1    | Bob  | Home        | 123 Nope St   | JP 
 2    | John | Work        | 555 Fake St   | MNGF 
 2    | John | Home        | 654 Madeup Ln | IMP JP 
 3    | Kim  | Work        | 92 Nadda Blvd | MP 
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个 SQL Server 查询来查找重复的 ID,并始终返回包含“工作”地址的行,但我希望它将两行中的功能连接起来,以便得到如下所示的结果:

 ID   | Name | AddressType | Address       | Features
 ========================================================
 1    | Bob  | Home …
Run Code Online (Sandbox Code Playgroud)

sql-server group-by group-concatenation sql-server-2014

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

仅当 id 不同时才在 group_concat 中获取重复值

我有两个表,首先是表 Product:

id|category_id
--+-----------
1 | 12345
2 | 12345
3 | 12465
Run Code Online (Sandbox Code Playgroud)

然后是表活动:

id|prod_id|activity_type   |description
--+-------+----------------+-----------
1 | 1     | Initialization | blah
2 | 1     | Finalization   | foo
3 | 2     | Initialization | blah again
4 | 2     | Duplication    | bar
5 | 2     | Finalization   | foobar
6 | 3     | Initialization | blob
7 | 3     | Migration      | A to B
8 | 3     | Migration      | B to C
9 | …
Run Code Online (Sandbox Code Playgroud)

mysql select group-concatenation

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

GROUP_CONCAT 与 ORDER BY ,但结果未排序

以下查询工作正常

SELECT
*,
(SELECT
GROUP_CONCAT(url SEPARATOR '$$' )
FROM project_photos
WHERE project_id = projects.id
ORDER BY priority) AS images
FROM projects
WHERE catID = 2
LIMIT 0,5
Run Code Online (Sandbox Code Playgroud)

但该images列并未按优先顺序排列。我无法理解为什么会发生这种情况

表项目的结构

CREATE TABLE `projects` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`catID` int(11) NOT NULL,
`title` varchar(255) NOT NULL,
`description` varchar(400) NOT NULL,
`url` varchar(255) DEFAULT NULL,
`tags` varchar(255) DEFAULT NULL,
`featured` varchar(3) NOT NULL DEFAULT 'No',
`featured_url` varchar(255) DEFAULT NULL,
`order` int(11) DEFAULT NULL,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY …
Run Code Online (Sandbox Code Playgroud)

mysql order-by subquery group-concatenation

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