欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql GROUP BY查詢每組某值最大的一條數(shù)據(jù)

 更新時(shí)間:2023年08月11日 15:04:31   作者:芥焉丶  
這篇文章主要介紹了Mysql GROUP BY查詢每組某值最大的一條數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Mysql GROUP BY查詢每組某值最大的一條數(shù)據(jù)

表結(jié)構(gòu)如下

需求

查詢每個(gè)學(xué)科(type)最高分(score)

想要的結(jié)果如下:

嘗試通過group by order by 查詢 sql 如下

SELECT * FROM `reports`  GROUP BY type ORDER BY score DESC;

結(jié)果如下:

order by 是在最后執(zhí)行并不能查詢到想要的結(jié)果

嘗試通過group by 排序后的子查詢 sql 如下

SELECT
	a.* 
FROM
	( SELECT * FROM `reports` ORDER BY score DESC) AS a 
GROUP BY
	a.type;

結(jié)果如下:

并沒有得道正確的結(jié)果

然后查詢資料看到有博客說需要在子查詢加上limit,如下sql:

SELECT
	a.* 
FROM
	( SELECT * FROM `reports` ORDER BY score DESC LIMIT 10) AS a 
GROUP BY
	a.type;

結(jié)果如下:

結(jié)果是對了,但是總覺得奇怪,為什么要加 limit ,這不是我想要的

###嘗試通過聚合函數(shù)查詢,sql如下:

SELECT
  s.*,	max( s.score ) 
FROM
	( SELECT * FROM `reports`  GROUP BY type, name ORDER BY score DESC ) s 
GROUP BY
	s.type

結(jié)果如下:

搞定max( s.score ) 亦可拿掉

Mysql group by分組后每組選取一條結(jié)果

直接說思路

  • 按照某個(gè)字段進(jìn)行分組
  • 選出你想要的結(jié)果
  • 回表查詢

舉個(gè)栗子

需求:

查詢訂單表(id, user_id, create_time, update_time),按照user_id分組,查詢該表中,每個(gè)用戶最新的一條訂單(表中update_time最大的)

select *?
from order ss, (select MAX(sa.update_time) as time, sa.user_id FROM order sa where sa.user_id is not null GROUP BY sa.user_id) aa?
where ss.user_id = sa.user_id and ss.update_time = sa.time

**MAX(sa.update_time)**就是第二步,按照你的業(yè)務(wù)需求,查出你想要的結(jié)果

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論