【发布时间】:2015-09-23 13:49:11
【问题描述】:
我正在尝试从单个表中查询数据集,其中包含来自多个用户的测验答案/条目。我想从每个用户中提取得分最高的条目。
我的数据如下所示:
ID TP_ID quiz_id name num_questions correct incorrect percent created_at
1 10154312970149546 1 Joe 3 2 1 67 2015-09-20 22:47:10
2 10154312970149546 1 Joe 3 3 0 100 2015-09-21 20:15:20
3 125564674465289 1 Test User 3 1 2 33 2015-09-23 08:07:18
4 10153627558393996 1 Bob 3 3 0 100 2015-09-23 11:27:02
我的查询如下所示:
SELECT * FROM `entries`
WHERE `TP_ID` IN('10153627558393996', '10154312970149546')
GROUP BY `TP_ID`
ORDER BY `correct` DESC
在我看来,应该做的是从IN 子句中获取两个用户,按correct 答案的数量对它们进行排序,然后将它们组合在一起,所以我应该得到来自这两个用户。
实际上,它给了我两个结果,但来自 Joe 的结果给了我两个值中较低的值 (2),Bob 首先得到 3 分。切换到 ASC 排序保持分数相同,但将 Joe 放在第一位.
那么,我怎样才能达到我所需要的呢?
【问题讨论】:
标签: mysql group-by sql-order-by