簡體   English   中英

mysql選擇column2的值,其中MIN(column1)

[英]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

小提琴:

http://sqlfiddle.com/#!2/f9a605/36/0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM