【问题标题】:how do I concatenate rows in a mysql query如何在 mysql 查询中连接行
【发布时间】:2013-03-25 02:07:36
【问题描述】:
table 1
--------
pid | name
1    someone
2    another


table2
--------
bid | valu
1     drum
2     guitar
3     flower
4     cake


table3
------
id | pid | bid | pref
1    1     3     yes
2    1     1     maybe
3    1     2     no
4    2     4     definately
5    2     2   
6    2     3     no

如您所见,我有 3 个简单的表,其中第三个用于创建表 1 和表 2 之间的映射以及一些附加数据。现在我需要编写一个查询来在基于pid 的串联字符串中显示valupref

所以针对pid = 1,预期输出类似于 flower yes, drum maybe, guitar no..so 我该如何写这个查询?

我试过了(几乎是盲目的猜测):

SELECT opa.name, GROUP_CONCAT(CONCAT(opb.valu,' ',opc.pref) SEPARATOR ',') AS myChoice
 From
     table_1 opa
 INNER JOIN table_3 opc ON opc.pid = opa.pid
 INNER JOIN table_2 opb ON opb.bid = opc.bid

感谢任何帮助。

【问题讨论】:

标签: mysql sql select group-concat


【解决方案1】:

您的查询是对的,您只是忘记了GROUP BY

 SELECT opa.name, GROUP_CONCAT(CONCAT(opb.valu,' ',opc.pref) SEPARATOR ',') AS myChoice
 From
 table1 opa
 INNER JOIN table3 opc ON opc.pid = opa.pid
 INNER JOIN table2 opb ON opb.bid = opc.bid
 group by opc.pid

DEMO HERE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 2015-08-02
    • 2013-02-25
    • 2022-01-02
    • 2016-03-08
    • 2021-08-16
    相关资源
    最近更新 更多