我想使用GROUP BY多列,我认为这是最好的一个例子开始:MySQL的使用GROUP BY分组由多个列
SELECT
eventsviews.eventId,
showsActive.showId,
showsActive.venueId,
COUNT(*) AS count
FROM eventsviews
INNER JOIN events ON events.eventId = eventsviews.eventId
INNER JOIN showsActive ON showsActive.eventId = eventsviews.eventId
WHERE events.status = 1
GROUP BY showsActive.venueId, showsActive.showId, showsActive.eventId
ORDER BY count DESC
LIMIT 100;
输出:
| *eventId* | *showId* | *venueId* | *count* |
+-----------+----------+-----------+---------+
[...snip...]
| 95 | 92099 | 9770 | 32 |
| 95 | 105472 | 10702 | 32 |
| 3804 | 41225 | 8165 | 17 |
| 3804 | 41226 | 8165 | 17 |
| 923 | 2866 | 5451 | 14 |
| 923 | 20184 | 5930 | 14 |
[...snip...]
什么我想,而不是:
| *eventId* | *showId* | *venueId* | *count* |
+-----------+----------+-----------+---------+
| 95 | 92099 | 9770 | 32 |
| 3804 | 41226 | 8165 | 17 |
| 923 | 20184 | 5930 | 14 |
所以,我想通过EVENTID分组我的数据,但只有一次,每个showId和venueId ...
我实际上有一个SQL查询可以做到这一点,但它有8个子查询并且和T-Ford一样慢...并且因为这是在每页执行页面加载,所以加快速度看起来像一个很好的理念!
有几个这样的问题,我尝试了很多不同的事情,但我一直在这个查询一个小时,我似乎无法让它工作,因为我想:-(
谢谢!
你想用什么规则来选择一个showId/venueId? – MatBailie 2012-01-06 10:08:59