1

我正在尝试查询以在一行上显示活动奖品的所有数据。例如,这是我的表的一个例子。

Event_id    Place    Money
101         1        120
101         2        60
101         3        30
102         1        100
102         2        50
102         3        25

我想要的是结果如下所示:

Event_id    First    Second    Third
101         120      60        30
102         100      50        25

任何帮助实现这一点将不胜感激。

4

2 回答 2

4

希望这可以帮助。

SELECT    Event_ID,
          GROUP_CONCAT(IF(place = 1, `money`, NULL)) `First`,
          GROUP_CONCAT(IF(place = 2, `money`, NULL)) `Second`,
          GROUP_CONCAT(IF(place = 3, `money`, NULL)) `Third`
FROM      tableName
GROUP BY  event_id

如果您想了解有关 sql 技巧的更多信息,请访问:

常见但有用的 MySQL 查询

在 SQLFiddle 上查看

于 2012-05-07T05:46:47.857 回答
0

这也适用于我

SELECT DISTINCT Event_id, (SELECT Money FROM PRIZE WHERE Place=1 AND Event_id=t.Event_id) AS First,
(SELECT Money  FROM PRIZE WHERE Place=2 AND Event_id=t.Event_id) AS Second,
(SELECT Money FROM PRIZE WHERE Place=3 AND Event_id=t.Event_id) AS Third
FROM PRIZE t;
于 2014-11-06T04:23:43.877 回答