簡體   English   中英

在所有行的新列中選擇全局min()

[英]Select global min() in a new column for all rows

我有一張桌子db_race

--------------------------
| Name    | Time | Map   |
--------------------------
| Max     | 240  | test1 |
| Alvin   | 600  | test2 |
| Amanda  | 234  | test1 |
| Angela  | 50   | test1 |
| Angela  | 2000 | test1 |
--------------------------

我現在想在地圖上選擇按最佳時間排序的一些行,如下所示

SELECT Name, min(Time) AS Time 
FROM db_race 
WHERE Map='test1' 
GROUP BY Name 
ORDER BY Time ASC

這樣做很好,但是我希望將所有記錄中的最佳時間添加到另一列中,如下所示。 (以后可以使用,但那不是問題的一部分)

----------------------------
| Name    | Time | TopTime |
----------------------------
| Angela  | 50   | 50      |
| Amanda  | 234  | 50      |
| Max     | 240  | 50      |
----------------------------

到目前為止,我嘗試了以下操作,但它只顯示了最佳時間,我希望整個選定表都可以使用

SELECT *, min(Time) AS TopTime 
FROM (SELECT Name, min(Time) AS Time 
      FROM db_race 
      WHERE Map='test1' 
      GROUP BY Name 
      ORDER BY Time ASC) a

我想確保我不需要通過使用子查詢來找到TopTime。 實際查詢將很長,我的目標是不要執行兩次。

大概是這樣嗎?

SELECT 
    Name, 
    min(Time) as Time, 
    (SELECT min(Time) FROM db_race WHERE Map='test1') as TopTime
FROM db_race
WHERE Map='test1'
GROUP BY Name
ORDER BY Time

暫無
暫無

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

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