我有一个包含 3 列的表 tt_players。
表结构
而我想要的结果是这样的。
请注意,具有相同reservation_id 的记录应出现在列中。我知 Prop 有相同 reservation_id 的行不会从 3 开始增加。
我尝试了 Group BY 子句但无法实现我想要的。任何帮助或提示将不胜感激。
最佳答案
我认为编写与您的字面预期输出相匹配的查询会让人头疼。但是使用 GROUP_CONCAT
我们可以得出非常接近的结果:
SELECT
reservation_id,
GROUP_CONCAT(player_id ORDER BY player_id) players
FROM
yourTable
GROUP BY
reservation_id;
这可能比您预期的更可取的一个原因是,如果给定的预订在未来的某个时间应该有超过 3 名玩家,我的查询只会将新玩家添加到 CSV 玩家列表中。如果我们在没有动态 SQL 的情况下获得准确的输出,则第四个玩家的存在可能会破坏查询。
Demo
关于mysql - 如何根据 SQL 中的条件在列而不是行中显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47133657/