日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mrsql查询第二高的成绩_mysql-查找用户的最高分数和相关的详细信息

發布時間:2023/12/10 数据库 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mrsql查询第二高的成绩_mysql-查找用户的最高分数和相关的详细信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我有一個表,用戶可以在其中存儲分數和有關該分數的其他信息(例如,分數注釋或花費的時間等).我想要一個mysql查詢,該查詢可找到每個用戶的個人最佳成績及其相關的注釋和時間等

我嘗試使用的是這樣的:

SELECT *,MAX(score)FROM table GROUP BY(用戶)

這樣做的問題是,雖然您可以從查詢[MAX(score)]中獲得最大的個人收益,但返回的音符和時間等與最高分數無關,而是與最高分數不同(特別是*中包含的分數) .有什么辦法可以編寫查詢來選擇我想要的內容?還是我必須在PhP中手動進行?

解決方法:

您可以與子查詢聯接,如以下示例所示:

SELECT t.*,

sub_t.max_score

FROM table t

JOIN (SELECT MAX(score) as max_score,

user

FROM table

GROUP BY user) sub_t ON (sub_t.user = t.user AND

sub_t.max_score = t.score);

上面的查詢可以解釋如下.它開始于:

SELECT t.* FROM table t;

…這本身顯然會列出表的所有內容.目標是僅保留代表特定用戶最高分數的行.因此,如果我們有以下數據:

+------------------------+

| user | score | notes |

+------+-------+---------+

| 1 | 10 | note a |

| 1 | 15 | note b |

| 1 | 20 | note c |

| 2 | 8 | note d |

| 2 | 12 | note e |

| 2 | 5 | note f |

+------+-------+---------+

…我們只希望保留“ note c”和“ note e”行.

要找到我們要保留的行,我們可以簡單地使用:

SELECT MAX(score), user FROM table GROUP BY user;

請注意,我們無法從上述查詢中獲取notes屬性,因為正如您已經注意到的那樣,對于未與aggregate function聚合的字段(如MAX()或不屬于GROUP BY子句的字段),您將無法獲得預期的結果.有關此主題的更多信息,您可能需要檢查:

現在,我們只需要保留第一個查詢中與第二個查詢匹配的行.我們可以使用INNER JOIN來做到這一點:

...

JOIN (SELECT MAX(score) as max_score,

user

FROM table

GROUP BY user) sub_t ON (sub_t.user = t.user AND

sub_t.max_score = t.score);

子查詢的名稱為sub_t.它是擁有最高個人得分的所有用戶的集合. JOIN的ON子句將限制應用于相關字段.請記住,我們只想保留屬于此子查詢的行.

標簽:max,grouping,mysql

來源: https://codeday.me/bug/20191106/2000623.html

總結

以上是生活随笔為你收集整理的mrsql查询第二高的成绩_mysql-查找用户的最高分数和相关的详细信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。