gpt4 book ai didi

Mysql 在两个表中找到公共(public)字段的匹配行并将字段合并为一行

转载 作者:行者123 更新时间:2023-11-29 11:35:08 25 4
gpt4 key购买 nike

我有三张表:表“A”有许多事件,每个事件都有一个唯一的 ID。表“B”具有与表 A 的 id 相匹配的类别,尽管每个 id 可能有多个匹配项。表“C”定义了与表“B”中的 ID 匹配的类别名称。如何获得显示具有一起列出的多个类别的唯一事件的输出,而不是每个类别重复的每个事件?

       Table A                  Table B              Table C
id | event | date | id | catid catid | cat
1 swim 1-2-16 1 11 11 slow
2 swim 1-2-16 1 12 12 med
3 run 1-3-16 1 13 13 fast
4 bike 1-5-16 2 11
5 run 1-30-16 3 12
3 13
4 12
5 11

我有这个Mysql语句:

    SELECT A.*, B.*, C.*
FROM A, B, C
WHERE A.id = B.id and B.catid = C.catid and DATE(date) BETWEEN "1-2-16" and "1-5-16
ORDER BY event, cat

问题是此语句的输出对每个类别重复该事件。我希望输出将适用于每个事件的所有类别列为输出行。例如,“在 1-2-16 慢速、中速、快速上游泳”而不是“在 1-2-16 慢速上游泳”“在 1-2-16 中速游泳”“在 1-2-16 快速游泳”。我怎样才能做到这一点?

最佳答案

你应该使用group_concat

 select A.event, A,date, group_concat(C.cat)
from A
inner join b on a.id = b.id
inner join b.catid = c.catid
group by b.id;

关于Mysql 在两个表中找到公共(public)字段的匹配行并将字段合并为一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36729807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com