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

mysql通過group?by分組取最大時間對應(yīng)數(shù)據(jù)的兩種有效方法

 更新時間:2022年09月21日 11:26:10   作者:努力努力,努力努力  
日常開發(fā)當(dāng)中,經(jīng)常會遇到查詢分組數(shù)據(jù)中指定的記錄,下面這篇文章主要給大家介紹了關(guān)于mysql通過group?by分組取最大時間對應(yīng)數(shù)據(jù)的兩種有效方法,文章通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

1、項(xiàng)目記錄表project_record的結(jié)構(gòu)和數(shù)據(jù)如下:

以下為項(xiàng)目記錄表project_record的所有數(shù)據(jù)。project_id為項(xiàng)目Id,on_project_time為上項(xiàng)目時間。(每一條數(shù)據(jù)代表著上某個項(xiàng)目(project_id)的時間(on_project_time)記錄)

2、我們的需求是:取出每個項(xiàng)目中最大上項(xiàng)目時間對應(yīng)的那條數(shù)據(jù)。(即根據(jù)project_id分組,取出每組中最大的on_project_time對應(yīng)的數(shù)據(jù)。)上方紅框是我們要查出的數(shù)據(jù)。

3、錯誤代碼:

SELECT * 
FROM (SELECT * FROM project_record order by on_project_time desc) t 
GROUP BY project_id;

查詢結(jié)果錯誤:

結(jié)果看似正確的,實(shí)則是錯誤的。每個項(xiàng)目最大的上項(xiàng)目時間能正確查出,但是數(shù)據(jù)對應(yīng)的id不正確。

分析發(fā)現(xiàn),對于每一個分組,分組后的結(jié)果總是取組中主鍵(id)最小的數(shù)據(jù),即group by project_id 總會對project_id執(zhí)行排序(正序)

 而不論臨時表(t)中是否已排序,都會取組中主鍵id最小的一行數(shù)據(jù)。換句話說 臨時表t 內(nèi)的排序 無法影響外層的group by 的操作。

4、 正確方法如下:

方法一:

SELECT t1.*
FROM project_record t1
INNER JOIN (
SELECT DISTINCT(id) id
FROM project_record 
ORDER BY on_project_time DESC) AS t2 ON t2.id = t1.id
GROUP BY t1.project_id;

查詢結(jié)果正確:

思路:需要關(guān)聯(lián)一張表,這個關(guān)聯(lián)表t2中的數(shù)據(jù)是對原表t1按照上項(xiàng)目時間倒敘排列,注意,此處必須使用distinct,此處distinct的作用可以理解為將t1表數(shù)據(jù)順序固定為t2表順序。

主表GROUP BY 后會取出按條件分組后的第一條數(shù)據(jù)。

方法二:

select t1.*
FROM project_record t1
INNER JOIN (SELECT SUBSTRING_INDEX(GROUP_CONCAT(id ORDER BY on_project_time DESC),',',1) AS id
FROM project_record GROUP BY project_id) AS t2 ON t2.id = t1.id;

查詢結(jié)果正確:

SUBSTRING_INDEX 用法:取排序后的分組的第一條數(shù)據(jù)。 

本人習(xí)慣使用第一種方法。

總結(jié)

到此這篇關(guān)于mysql通過group by分組取最大時間對應(yīng)數(shù)據(jù)的兩種有效方法的文章就介紹到這了,更多相關(guān)mysql group by分組取對應(yīng)數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 將phpstudy中的mysql遷移至Linux教程

    將phpstudy中的mysql遷移至Linux教程

    本文主要給大家介紹了關(guān)于將phpstudy中的mysql遷移至Linux的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。希望能版助到大家。
    2018-04-04
  • 找到MySQL的優(yōu)點(diǎn)

    找到MySQL的優(yōu)點(diǎn)

    假設(shè)你是一個Access開發(fā)人員,而你想移植一個Access后臺到一個本地的MySQL 服務(wù)器用于開發(fā)和測試。你將維護(hù)你自己的解決方案并樂于使用Community Server
    2009-09-09
  • MySQL數(shù)據(jù)庫約束操作示例講解

    MySQL數(shù)據(jù)庫約束操作示例講解

    約束是用來限制表中的數(shù)據(jù)長什么樣子的,即什么樣的數(shù)據(jù)可以插入到表中,什么樣的數(shù)據(jù)插入不到表中,下面這篇文章主要給大家介紹了關(guān)于如何通過一文理解MySQL數(shù)據(jù)庫的約束與表的設(shè)計的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • MySQL中的undo日志

    MySQL中的undo日志

    這篇文章主要介紹了MySQL中的undo日志的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)MySQL的相關(guān)知識,感興趣的朋友可以了解下
    2020-11-11
  • CentOS6.5下RPM方式安裝mysql5.6.33的詳細(xì)教程

    CentOS6.5下RPM方式安裝mysql5.6.33的詳細(xì)教程

    本文給大家詳細(xì)介紹CentOS6.5下RPM方式安裝mysql5.6.33的教程,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友一起看看吧
    2016-10-10
  • mysql建庫時提示Specified key was too long max key length is 1000 bytes的問題的解決方法

    mysql建庫時提示Specified key was too long max key length is 1000

    本文將詳細(xì)提供mysql建庫時提示Specified key was too long max key length is 1000 bytes的問題的解決方法,有需求的朋友可以參考
    2012-11-11
  • 解決Mysql建表時報錯invalid?ON?UPDATE?clause?for?'create_date'?column

    解決Mysql建表時報錯invalid?ON?UPDATE?clause?for?'create_d

    這篇文章主要介紹了解決Mysql建表時報錯invalid?ON?UPDATE?clause?for?'create_date'?column問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • MySQL基礎(chǔ)教程第一篇 mysql5.7.18安裝和連接教程

    MySQL基礎(chǔ)教程第一篇 mysql5.7.18安裝和連接教程

    這篇文章主要為大家詳細(xì)介紹了MySQL基礎(chǔ)教程第一篇,mysql5.7.18安裝和連接教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Mysql在線回收undo表空間實(shí)戰(zhàn)記錄

    Mysql在線回收undo表空間實(shí)戰(zhàn)記錄

    這篇文章主要給大家介紹了關(guān)于Mysql在線回收undo表空間的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Mysql具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • MySQL 可擴(kuò)展設(shè)計的基本原則

    MySQL 可擴(kuò)展設(shè)計的基本原則

    可擴(kuò)展設(shè)計是一個非常復(fù)雜的系統(tǒng)工程,所涉及的各個方面非常的廣泛,技術(shù)也較為復(fù)雜,可能還會帶來很多其他方面的問題。但不管我們?nèi)绾卧O(shè)計,不管遇到哪些問題,有些原則我們還是必須確保的。
    2021-05-05

最新評論