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

mysql如何取分組之后最新的數(shù)據(jù)

 更新時(shí)間:2022年06月08日 14:41:59   作者:Tracy蘇何  
開發(fā)中經(jīng)常會(huì)遇到,分組查詢最新數(shù)據(jù)的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于mysql如何取分組之后最新的數(shù)據(jù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、數(shù)據(jù)表設(shè)計(jì)

二、查詢場(chǎng)景 

統(tǒng)計(jì)每門課的考試次數(shù)、最新一次考試的時(shí)間、最新一次考試的錄入成績(jī)的老師

1、統(tǒng)計(jì)沒(méi)門課的考試次數(shù)

#考試次數(shù)統(tǒng)計(jì)
select project '科目',count(project) '考試次數(shù)' from score a group by project

查詢結(jié)果:

 2、最新一次考試的時(shí)間

#考試次數(shù)統(tǒng)計(jì)	最新一次考試的時(shí)間
select project '科目',count(project) '考試次數(shù)' ,max(create_time) from score a group by project

查詢結(jié)果:

 

 3、分組統(tǒng)計(jì)最新的錄入成績(jī)的老師

當(dāng)我們分組去查詢最新的錄入成績(jī)的老師或者分組查詢最新一次各科的成績(jī)時(shí)確發(fā)現(xiàn)數(shù)據(jù)不是最新的。

SELECT
	a.id,
	a.edit_teacher,
	a.project,
	a.create_time,
	a.score, 
	count(project) '考試次數(shù)',
	max(create_time) '最新數(shù)據(jù)時(shí)間'
FROM
	score a 
GROUP BY
	a.project

查詢結(jié)果:

但是很顯然我們需要查詢的數(shù)據(jù)id應(yīng)該是4、8、12

 可以看出分組聚合的時(shí)候默認(rèn)查詢的是分組之后的第一條數(shù)據(jù),那么我們想要查詢最新的數(shù)據(jù)需要新對(duì)我們的數(shù)據(jù)進(jìn)行排序

SELECT
	*,
	count( project ) '考試次數(shù)',
	max(create_time) '最新數(shù)據(jù)時(shí)間' 
FROM
	(
SELECT
	a.id,
	a.edit_teacher,
	a.project,
	a.create_time,
	a.score 
FROM
	score a 
ORDER BY
	a.id DESC 
	) b 
GROUP BY
	b.project

查詢結(jié)果:

我們發(fā)現(xiàn)數(shù)據(jù)并不是我們想要的結(jié)果,子查詢里面的排序失效了

網(wǎng)上查找各種資料發(fā)現(xiàn)

子查詢生成的臨時(shí)表(派生表derived table)中使用order by且使其生效,必須滿足三個(gè)條件:

1、外部查詢禁止分組或者聚合

2、外部查詢未指定having,HAVING, order by

3、外部查詢將派生表或者視圖作為from句中唯一指定源

顯然我們沒(méi)有滿足,那么如何解決order by失效呢?

我們外部表使用了group by,那么臨時(shí)表將不會(huì)執(zhí)行filesort操作(即order by會(huì)被忽略),所以我們可以在臨時(shí)表中加上(distinct(a.id))。

SELECT
	*,
	count( project ) '考試次數(shù)' ,
	max(create_time) '最新數(shù)據(jù)時(shí)間' 
FROM
	(
SELECT DISTINCT
	a.id,
	a.edit_teacher,
	a.project,
	a.create_time,
	a.score 
FROM
	score a 
ORDER BY
	a.id DESC 
	) b 
GROUP BY
	b.project

執(zhí)行結(jié)果:

 結(jié)果正確。

總結(jié)

到此這篇關(guān)于mysql如何取分組之后最新的數(shù)據(jù)的文章就介紹到這了,更多相關(guān)mysql取分組最新數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mysql?查詢患某種疾病的患者語(yǔ)句

    Mysql?查詢患某種疾病的患者語(yǔ)句

    select?語(yǔ)句的作用是根據(jù)輸入的條件返回指定的數(shù)據(jù)結(jié)果,select?的語(yǔ)法可以有很多種查詢的組合,基本上能夠滿足我們所有的查詢數(shù)據(jù)需求,這篇文章主要介紹了Mysql?查詢患某種疾病的患者,需要的朋友可以參考下
    2022-10-10
  • mysql 5.7.13 winx64安裝配置方法圖文教程

    mysql 5.7.13 winx64安裝配置方法圖文教程

    這篇文章主要為大家分享了mysql 5.7.13winx64安裝配置方法圖文教程,感興趣的朋友可以參考一下
    2016-06-06
  • 五分鐘讓你快速弄懂MySQL索引下推

    五分鐘讓你快速弄懂MySQL索引下推

    ICP(Index Condition Pushdown)是在MySQL 5.6版本上推出的查詢優(yōu)化策略,把本來(lái)由Server層做的索引條件檢查下推給存儲(chǔ)引擎層來(lái)做,下面這篇文章主要給大家介紹了關(guān)于MySQL索引下推的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • MySQL中SQL分頁(yè)查詢的幾種實(shí)現(xiàn)方法及優(yōu)缺點(diǎn)

    MySQL中SQL分頁(yè)查詢的幾種實(shí)現(xiàn)方法及優(yōu)缺點(diǎn)

    這篇文章主要介紹了MySQL中SQL分頁(yè)查詢的幾種實(shí)現(xiàn)方法及優(yōu)缺點(diǎn), 分頁(yè)查詢就是在滿足條件的一堆有序數(shù)據(jù)中截取當(dāng)前所需要展示的那部分。對(duì)此感興趣的可以來(lái)了解一下
    2020-07-07
  • MySql安裝步驟圖文教程及中文亂碼的解決方案

    MySql安裝步驟圖文教程及中文亂碼的解決方案

    這篇文章主要介紹了MySql安裝步驟圖文教程及中文亂碼的解決方案,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • mysql-canal-rabbitmq 安裝部署超詳細(xì)教程

    mysql-canal-rabbitmq 安裝部署超詳細(xì)教程

    這篇文章主要介紹了mysql-canal-rabbitmq 安裝部署超詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • MySQL InnoDB中的鎖機(jī)制深入講解

    MySQL InnoDB中的鎖機(jī)制深入講解

    這篇文章主要給大家介紹了關(guān)于MySQL InnoDB中鎖機(jī)制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • mysql?8.0版本更換用戶密碼的方法步驟

    mysql?8.0版本更換用戶密碼的方法步驟

    這篇文章主要給大家介紹了關(guān)于mysql?8.0版本更換用戶密碼的方法步驟,MySQL用戶密碼的修改是經(jīng)常面臨的一個(gè)問(wèn)題,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • mysql unsigned 用法及相減出現(xiàn)補(bǔ)數(shù)溢出解決方法

    mysql unsigned 用法及相減出現(xiàn)補(bǔ)數(shù)溢出解決方法

    unsigned表示無(wú)符號(hào)的意思,也就是非負(fù)數(shù),只用于整型并且unsigned 是MYSQL自定義的類型,非標(biāo)準(zhǔn)SQL。用途1是紅苕說(shuō)的起到約束數(shù)值的作用,2是可以增加數(shù)值范圍(相當(dāng)于把負(fù)數(shù)那部分加到正數(shù)上)。不過(guò)少用,不方便移植
    2012-04-04
  • linux下安裝mysql數(shù)據(jù)庫(kù)5.6源碼安裝,修改登錄用戶密碼

    linux下安裝mysql數(shù)據(jù)庫(kù)5.6源碼安裝,修改登錄用戶密碼

    這篇文章主要介紹了linux下安裝mysql5.6版本并修改登錄用戶密碼的方法。
    2017-11-11

最新評(píng)論