[英]mysql select value of column2 where MIN(column1)
這是我的數據集和當前代碼: http : //sqlfiddle.com/#!2/f9a605/3
| id | courseid | username | day | score |
--------------------------------------------
| 1 | 2 | tim | may 5 | 85 |
| 2 | 2 | mike | may 6 | 86 |
| 3 | 2 | tim | may 7 | 82 |
| 4 | 3 | tim | may 8 | 80 |
| 5 | 2 | mike | may 9 | 79 |
| 6 | 2 | joe | may 10| 81 |
我想為每個用戶的最低分數選擇值,其中Courseid = 2由最低分數排序,因此結果應類似於:
| mike | may 9 | 79 |
| joe | may 10 | 81 |
| tim | may 8 | 82 |
我當前的代碼如下所示:
SELECT courseid, username, day, MIN(score) FROM result where courseid = '2' GROUP BY username order by MIN(score) limit 10
我當前的結果如下所示:
| mike | may 6 | 79 |
| joe | may 10 | 81 |
| tim | may 5 | 82 |
日子錯了。
當課程ID = 2時,如何獲得與該人的最低分數相對應的正確日期?
可以在2個條件下使用自我加入來完成此操作,一個條件為使用用戶名,第二個條件為最低分
SELECT r.courseid, r.username, r.`day`,r.score
FROM result r
JOIN (SELECT username, MIN(score) score
FROM result
where courseid = '2'
GROUP BY username) r1
ON(r.username = r1.username and r.score = r1.score)
order by r.score
limit 10
另外,在您的預期結果中,蒂姆的日期應為May7
Fiddle Demo
您可以使用子查詢:
select courseid, username, day, score
from result x
where score = (select min(y.score)
from result y
where y.username = x.username
and x.courseid = y.courseid)
and courseid = 2
order by score
小提琴:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.