标签: group-concat

用于group by的tsql聚合字符串

我有两张桌子:

名称(id,名称)地址(id,name_id,地址)

我想编写一个返回我的查询:名称,地址列表(address1,address2,adress3,..)

就像是:

Select A.name, B.list_of_addresses
From Names A
    Inner Join (Select name_id, /*list_of_addresses with comma between them*/
                From Addresses
                Group By name_id)  B ON A.id=B.name_id
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005 group-concat

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

两个不同表上的group_concat在第二个表上给出重复的结果

考虑三个实体作为学生,课程,主题以下是协会 -

student has_many courses,
student has_many subjects.
Run Code Online (Sandbox Code Playgroud)

现在我想使用mysql group_concat,主题名称和课程名称,在课程上左连接,在主题上左联接和group_by student_id获取学生记录.

问题是,group_concat('subjects.name') as subject_names我给了我重复的主题条目,但group_concat('students.name') as student_names给出了唯一的名称.

为什么?

mysql left-join group-concat

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

GROUP_CONCAT返回多条记录

我有很多表并执行大查询(大约5-7 LEFT JOIN).看起来像这样

SELECT *, t.id
GROUP_CONCAT(field SEPARATOR '|') AS fields,
GROUP_CONCAT(other SEPARATOR '|') AS others
FROM table t
LEFT JOIN tablefields tf ON t.id = tf.user_id
LEFT JOIN tableothers to ON t.id = to.user_id
GROUP BY t.id
Run Code Online (Sandbox Code Playgroud)

这是问题所在.所有字段都很好,但是两个就像'value | value | value | value'(15-17次),即使连接表中只有一行.

我做错了什么?

PS

我不能使用DISTINCT,因为一个字段是section_id而其他字段是note.注意可能类似,但section_id是唯一的.

PPS

https://gist.github.com/3098105

查看查询结果的一部分.

mysql> SELECT * FROM tablename;
+----+---------+------------+-----------+
| id | user_id | section_id | note_data |
+----+---------+------------+-----------+
|  1 |    1331 | UserVideo  | test      |
|  2 …
Run Code Online (Sandbox Code Playgroud)

mysql group-concat

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

获取GROUP_BY值作为字符串

我有这个简单的表叫做问题:

id | asker
 1 | Bob
 2 | Marley
 3 | Bob
Run Code Online (Sandbox Code Playgroud)

我想得到一个逗号分隔的提问者值列表.我使用以下查询:

SELECT GROUP_CONCAT(asker) FROM questions
Run Code Online (Sandbox Code Playgroud)

这将导致:

Bob,Marley,Bob
Run Code Online (Sandbox Code Playgroud)

我希望它的结果如下:

'Bob','Marley','Bob'
Run Code Online (Sandbox Code Playgroud)

谢谢

php mysql sql group-by group-concat

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

mysql group_concat group by on multiple fields

我有一个表成员有member_id,member_name,club_name,region,zone,email为各个领域.

我正在使用group_concat像MySQL这样的函数

SELECT group_concat(distinct m.email
SEPARATOR ', ' ) from member m group by m.club_name
Run Code Online (Sandbox Code Playgroud)

这工作正常.但我希望能够group_concat在其他领域无需创建其他查询.

是否可以提供其他字段作为参数?

member_id   member_name club_name   region  zone    email
1           member1           A        1    1   email1@example.com
2           member2           A        1    1   email2@example.com
3           member3           B        1    1   email3@example.com
4           member4           C        1    2   email4@example.com
5           member5           D        2    1   email5@example.com

**group by club**
email1@example.com,email2@example.com
email3@example.com
email4@example.com
email5@example.com

**group by region**
email1@example.com, …
Run Code Online (Sandbox Code Playgroud)

mysql group-concat

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

mysql使用GROUP CONCAT和JOIN选择多行

这是我一直在努力解决的问题.我需要从特定博客ID中提取所有帖子.另外,我需要提取属于每个帖子的所有标签.

问题是当帖子没有标签时,查询不会返回它.如何获取标签单元格的空结果而不是不对该行进行退回?

我有以下表格

帖子:

ID  title
74  HELLO
75  HELLO2
76  HELLO3
Run Code Online (Sandbox Code Playgroud)

tags_relation:

ID|post_id|tag_id
57  74       3
56  74       61
58  75       62
59  75       63
Run Code Online (Sandbox Code Playgroud)

标签:

ID  tag
3   Love
61  Sometag
62  Sometag1
63  Sometag2
64  Sometag3
65  Sometag4
Run Code Online (Sandbox Code Playgroud)

这是我的查询:

SELECT post . * ,
   user.username,
   user.picture,
   GROUP_CONCAT(tag.tag SEPARATOR ',') AS tags
FROM `posts` AS post
INNER JOIN `users` AS USER ON USER.blog_id = post.blog_id
INNER JOIN `tags_relation` AS tags_relation
INNER JOIN `tags` AS tag ON tag.ID = …
Run Code Online (Sandbox Code Playgroud)

mysql sql join group-concat

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

SQLite,多对多关系,如何聚合?

我在使用SQLite构建的应用程序之类的小型闪存卡中有多对多关系的经典安排.每张卡都可以有多个标签,每个标签都可以有多张卡.这两个实体每个都有一个表,第三个表用于链接记录.

这是卡片表:

CREATE TABLE Cards (CardId INTEGER PRIMARY KEY AUTOINCREMENT,
                    Text TEXT NOT NULL,
                    Answer INTEGER NOT NULL,
                    Success INTEGER NOT NULL,
                    Fail INTEGER NOT NULL);
Run Code Online (Sandbox Code Playgroud)

这是标签的表格:

CREATE TABLE Tags (TagId INTEGER PRIMARY KEY AUTOINCREMENT,
                   Name TEXT UNIQUE NOT NULL);
Run Code Online (Sandbox Code Playgroud)

这是交叉引用表:

CREATE TABLE CardsRelatedToTags (CardId INTEGER,
                                 TagId INTEGER,
                                 PRIMARY KEY (CardId, TagId));
Run Code Online (Sandbox Code Playgroud)

我需要在一个用逗号分隔的列中获取一张带有相关标签的卡片表.我已经可以通过以下查询获知我需要知道其Id的单行所需的内容:

SELECT Cards.CardId, Cards.Text,
       (SELECT group_concat(Tags.Name, ', ') FROM Tags
           JOIN CardsRelatedToTags ON CardsRelatedToTags.TagId = Tags.TagId
           WHERE CardsRelatedToTags.CardId = 1) AS TagsList
           FROM Cards
           WHERE Cards.CardId = 1 …
Run Code Online (Sandbox Code Playgroud)

sql sqlite many-to-many group-concat

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

MySQL group_concat()按case语句值排序

在MySQL group_concat()子句中,我正在尝试对case语句的结果值进行排序.以下查询配置正确things.name排序,但未在同一上下文中排序"非美国"或"未知"值.

SELECT 
  things.id
  ,group_concat(DISTINCT 
    CASE
    WHEN things.name <> 'United States' THEN 'Non-US'
    WHEN things.name IS NULL THEN 'Unknown'
    ELSE things.name
    END
  ORDER BY name SEPARATOR ', ')
FROM things
GROUP BY things.id
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情,但它不起作用:

SELECT 
  things.id
  ,group_concat(DISTINCT 
    (CASE
    WHEN things.name <> 'United States' THEN 'Non-US'
    WHEN things.name IS NULL THEN 'Unknown'
    ELSE things.name
    END) AS new_name
  ORDER BY new_name SEPARATOR ', ')
FROM things
GROUP BY things.id
Run Code Online (Sandbox Code Playgroud)

有没有办法按"new_name"排序而不使用子查询/嵌套查询?

mysql sql sql-order-by group-concat

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

PHP MySQL GROUP_CONCAT限制

我无法找到这是可能的,所以,有没有选择限制GROUP_CONCATMySQL函数?

例如:

GROUP_CONCAT(ColName ORDER BY ColName DESC LIMIT 5)
Run Code Online (Sandbox Code Playgroud)

我不想使用子查询,因为这会严重降低性能.我可以稍后在PHP中对数组进行切片,但我想知道还是MySQL已经可以选择在MySQL中实现这一点.

php mysql limit group-concat

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

mysql-GROUP_CONCAT行转换为字符串

我有以下结果集:

req_id |  p_id  | ai_result  |  hash | sku
1      |  4     | Match      |  XAN  | HOW
1      |  4     | Match      |  HXN  | HOW
1      |  4     | Non Match  |  123  | HOW
Run Code Online (Sandbox Code Playgroud)

我需要以下输出

sku  | matched  |  non_matched
HOW  | XAN, HXN |  123
Run Code Online (Sandbox Code Playgroud)

这是我所能得到的:

SELECT sku, GROUP_CONCAT(hash) AS hash
FROM `sku_match` 
GROUP BY req_id, p_id
Run Code Online (Sandbox Code Playgroud)

如何根据ai_result列区分行并将它们分开放置。像GROUP_CONCAT(hash) AS matched, GROUP_CONCAT(hash) AS non_matched什么?

mysql sql group-by group-concat

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