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

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

 更新時(shí)間:2022年09月21日 11:26:10   作者:努力努力,努力努力  
日常開(kāi)發(fā)當(dāng)中,經(jīng)常會(huì)遇到查詢分組數(shù)據(jù)中指定的記錄,下面這篇文章主要給大家介紹了關(guān)于mysql通過(guò)group?by分組取最大時(shí)間對(duì)應(yīng)數(shù)據(jù)的兩種有效方法,文章通過(guò)實(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í)間。(每一條數(shù)據(jù)代表著上某個(gè)項(xiàng)目(project_id)的時(shí)間(on_project_time)記錄)

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

3、錯(cuò)誤代碼:

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

查詢結(jié)果錯(cuò)誤:

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

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

 而不論臨時(shí)表(t)中是否已排序,都會(huì)取組中主鍵id最小的一行數(shù)據(jù)。換句話說(shuō) 臨時(shí)表t 內(nèi)的排序 無(wú)法影響外層的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)一張表,這個(gè)關(guān)聯(lián)表t2中的數(shù)據(jù)是對(duì)原表t1按照上項(xiàng)目時(shí)間倒敘排列,注意,此處必須使用distinct,此處distinct的作用可以理解為將t1表數(shù)據(jù)順序固定為t2表順序。

主表GROUP BY 后會(huì)取出按條件分組后的第一條數(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通過(guò)group by分組取最大時(shí)間對(duì)應(yīng)數(shù)據(jù)的兩種有效方法的文章就介紹到這了,更多相關(guān)mysql group by分組取對(duì)應(yīng)數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

    將phpstudy中的mysql遷移至Linux教程

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

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

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

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

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

    MySQL中的undo日志

    這篇文章主要介紹了MySQL中的undo日志的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)MySQL的相關(guān)知識(shí),感興趣的朋友可以了解下
    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ì),具有一定的參考借鑒價(jià)值,需要的朋友一起看看吧
    2016-10-10
  • mysql建庫(kù)時(shí)提示Specified key was too long max key length is 1000 bytes的問(wèn)題的解決方法

    mysql建庫(kù)時(shí)提示Specified key was too long max key length is 1000

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

    解決Mysql建表時(shí)報(bào)錯(cuò)invalid?ON?UPDATE?clause?for?'create_d

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

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

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

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

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

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

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

最新評(píng)論