我有下表列出了所有获奖杯子:
Name: Cups
Columns: Month, Cup, User
Example:
Month | Cup__ | User__
_____ | _____ | ______
Febru | Cup_1 | User_1
Febru | Cup_2 | User_1
March | Cup_1 | User_1
March | Cup_2 | User_2
April | Cup_2 | User_2
*There are only 2 different cups
我知道如何获得每个用户有多少奖励(COUNT),即使是某种类型(WHERE Cup = Cup_1),但我如何在同一个查询中获得所有这些?
基于上表的示例:
User__ | Total | Cup_1 | Cup_2
______ | _____ | _____ | _____
User_1 | __3__ | __2__ | __1__
User_2 | __2__ | __0__ | __2__
User_1 has 3 cups, 2 of Cup_1 and 1 Cup_2.
User_2 has 2 cups, 2 of Cup_2.
基本上,总列是其他列的总和。
答案 0 :(得分:1)
这有点乏味,但它看起来像这样
SELECT User, COUNT(*) AS Total, SUM(IF(Cup = "Cup_1", 1, 0)) AS Cup_1, SUM(IF(Cup = "Cup_2", 1, 0)) AS Cup_2 FROM Cups GROUP BY User
我在条件语句中使用SUM,以确定杯子是否与我正在寻找的值匹配。如果有匹配,它将加1,如果没有,则加0。如前所述,它有点乏味,但肯定会有效!