繁体   English   中英

如何为单行选择多个结果-MySQL

[英]How to select multiple results for a single row - MySQL

我有3个表: gameplatformgame_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

如果要动态确定平台列,则需要在调用或中间层代码中动态构建查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM