所以我有一个看起来像这样的表:(称为PRIZE)
Event_id Place Money
101 1 120
101 2 60
101 3 30
102 1 10
102 2 5
102 3 2
103 1 100
103 2 60
103 3 40
401 1 1000
401 2 500
401 3 250
401 4 100
401 5 50
我正在尝试回答这个问题:
对于每个事件,在一行上列出可用于第一,第二和第三名的奖金。按event_id分组。
例如。将会出现一行结果:
Event_id First Second Third
101 120 60 30
到目前为止,我已经做到了:
SELECT Event_id, Money AS 'First'
FROM PRIZE
WHERE Place = '1'
GROUP BY Event_id;
但是在问题的“第二”和“第三”部分添加SQL确实很麻烦。
有人可以帮忙吗?
谢谢!!
最佳答案
为什么不使用多个联接只执行一个选择语句,而不是对子查询执行多个选择?
SELECT tb.event_id,
tb1.money AS first,
tb2.money AS second,
tb3.money AS third
FROM prize tb
INNER JOIN prize tb1 ON tb1.event_id = tb.event_id AND tb1.place = 1
INNER JOIN prize tb2 ON tb2.event_id = tb.event_id AND tb2.place = 2
INNER JOIN prize tb3 ON tb3.event_id = tb.event_id AND tb3.place = 3
GROUP BY tb.event_id;
关于mysql - 协助SQL子查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32115701/