mysql - 如何根据 SQL 中的条件在列而不是行中显示数据

标签 mysql sql group-by

我有一个包含 3 列的表 tt_players。

表结构

enter image description here

而我想要的结果是这样的。

enter image description here

请注意,具有相同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;

enter image description here

这可能比您预期的更可取的一个原因是,如果给定的预订在未来的某个时间应该有超过 3 名玩家,我的查询只会将新玩家添加到 CSV 玩家列表中。如果我们在没有动态 SQL 的情况下获得准确的输出,则第四个玩家的存在可能会破坏查询。

Demo

关于mysql - 如何根据 SQL 中的条件在列而不是行中显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47133657/

相关文章:

mysql - 有没有办法指定 SELECT 数据库查询的起点?

r - 在R中,如何按降序对多列数据进行分组,然后为每个组指定从1开始的索引?

php - MySQL 抓取不返回任何内容

mysql - 这个查询写得好吗?我对此很陌生,想知道是否有更好的方法来编写它

java - 使 Hibernate 鉴别器值使用绑定(bind)变量而不是文字

mysql - 将表中的非空值合并到一个结果行

mysql - 如何找到mysql中每列值与主键的比率?

mysql - 从子查询更新多列

php - Yii2:mysql 查询以获取有关待处理作业的提醒?

mysql - SQL 对满足条件的每一行执行操作