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
,
value
和 pref
因此,针对 pid = 1
,预期输出类似于
花是,鼓可能,吉他否
....那么我该如何编写这个查询?
我尝试过(几乎是盲目的猜测):
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
感谢任何帮助。
最佳答案
您的查询是正确的,您只是忘记了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
关于mysql - 如何连接 mysql 查询中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15786833/