mysql - 如何连接 mysql 查询中的行

标签 mysql sql select group-concat

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,

在连接字符串中显示 valuepref

因此,针对 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

DEMO HERE

关于mysql - 如何连接 mysql 查询中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15786833/

相关文章:

java - 崩溃后处理事务

MySQL select 子查询中不等于 limit

mysql - 如何检查表中是否存在多对多对多...

mysql - MySQL 数据量大时出现重复条目​​?

mysql - 从 shell 中 grunt 导入数据库

sql - SPARQL 查询,选择除匹配项之外的所有内容?

sql - PostgreSQL - 为条件成立的行选择计数(*)

regex - 在 PowerShell 中按列拆分文本

php - 用 PHP 和 MySQL 实现一个简单的队列?

sql - Postgres 正则表达式替换性能