[英]How to select multiple results for a single row - MySQL
我有3个表: game
, platform
和game_platform
。
游戏:
id name desc
---- ------------ ---------
1 Modern Warfare... Awesome game......
2 ... ...
3 ... ...
平台:
id name
---- ------------
1 pc
2 ps3
3 ...
game_platform:
game_id platform_id
-------- -----------
1 1
1 2
... ...
我想要获得的行包含游戏表中的数据以及该游戏的所有平台。
但是,通过常规查询,对于具有多个平台的游戏,我会得到多行。 有没有办法让他们排成一行?
您没有提供所需输出的示例。 如果您希望将所有平台归为一列,则可以这样做。
SELECT g.id, g.name, g.desc, GROUP_CONCAT(P.name) AS platforms
from game g
JOIN game_platform gp ON gp.game_id = g.id
JOIN platform P ON gp.platform_id = p.id
GROUP BY g.id, g.name, g.desc
Select G.Id, G.name
, Min( Case When P.Id = 1 Then P.Name End ) As Platform1
, Min( Case When P.Id = 2 Then P.Name End ) As Platform2
, Min( Case When P.Id = 3 Then P.Name End ) As Platform3
From game As G
Join game_platform As GP
On GP.game_id = G.id
Join platform As P
On P.Id = GP.platform_id
Group By G.Id, G.name
如果要动态确定平台列,则需要在调用或中间层代码中动态构建查询。
有一个mysql concat函数。
http://www.brainbell.com/tutorials/MySQL/Concatenating_Fields.htm
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.