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

MySQL中g(shù)roup by與max()一起使用的坑

 更新時間:2023年08月09日 15:09:14   作者:搬磚,攢路費  
最近在做一個項目,發(fā)現(xiàn)用之前SQL語句導出的余額與客戶人員最近消費記錄所顯示的余額不一致,本文就來了解一下這個錯誤,感興趣的可以了解一下

前言

國慶之間在進行一個消費項目切換時,發(fā)現(xiàn)用之前SQL語句導出的余額與客戶人員最近消費記錄所顯示的余額不一致,客戶人員又比較多,還好及時發(fā)現(xiàn)沒涼成大錯!現(xiàn)在來記錄一下。

一 GROUP BY的簡單介紹

GROUP BY顧名思義,group: 分組,by: 以…; 組合起中來就是以什么來分組。在mysql理解為以一個字段或多個字段來分組顯示結(jié)果集,如下。

數(shù)據(jù)表

執(zhí)行以下語句

select *from scgroup by sid

結(jié)果如下

結(jié)果以sid分組表示出來了,細心一點會發(fā)現(xiàn)分組后顯示的記錄是分組前第一條sid對應的值,執(zhí)行以下語句可以觀察到,如下。

SELECT *,GROUP_CONCAT(score)
FROM sc
GROUP BY sid;

二 MAX()的簡單介紹

MAX()是mysql里面的一個聚合函數(shù),用來取最大值的,如下。

SELECT MAX(score)
FROM sc;

結(jié)果顯示score列的最大值,是沒有問題的。

三 group by與max()一起使用

要求:導出sid中score值最大的那條記錄(類似與導余額)

之前導余額用的語句類似以下SQL語句

SELECT sid,cid,MAX(score) as score
FROM sc
GROUP BY sid;

咋一看,score的值篩選出來是最大的,沒有問題,但是核對score最高值對應的記錄時發(fā)現(xiàn)是錯的,如下

四 原因

我分析了下原因,主要是由group by 分組后顯示的是第一條記錄,而max()取的是相同sid中的最大score值造成的,如下

SELECT sid,cid,score,GROUP_CONCAT(score)
FROM sc
GROUP BY sid;

相當于把第一條記錄的score值用最大值替換了,這顯然是不對的。

五 解決辦法

我的方法是先用子查詢把sid和其最大值score先查出來,然后再和原表匹配,如下

SELECT a.sid,a.cid,a.score
FROM
sc as a,
(SELECT sid,max(score) as score
FROM sc
GROUP BY sid) as b
WHERE a.sid=b.sid AND a.score=b.score

當然,解決方法不止這一種,具體情況具體討論。

到此這篇關(guān)于MySQL中g(shù)roup by與max()一起使用的坑的文章就介紹到這了,更多相關(guān)MySQL group by與max()一起使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 史上最簡單的MySQL數(shù)據(jù)備份與還原教程(下)(三十七)

    史上最簡單的MySQL數(shù)據(jù)備份與還原教程(下)(三十七)

    這篇文章主要為大家詳細介紹了史上最簡單的MySQL數(shù)據(jù)備份與還原教程下篇,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • MySQL8.0移除傳統(tǒng)的.frm文件原因及解讀

    MySQL8.0移除傳統(tǒng)的.frm文件原因及解讀

    MySQL 8.0移除傳統(tǒng)的.frm文件,采用基于InnoDB的事務型數(shù)據(jù)字典,主要解決了元數(shù)據(jù)不一致、性能優(yōu)化、架構(gòu)簡化、增強功能支持、兼容性與升級問題,這一變革提高了數(shù)據(jù)庫的可靠性和性能,為未來的高級功能奠定了基礎
    2025-03-03
  • mysql實現(xiàn)合并同一ID對應多條數(shù)據(jù)的方法

    mysql實現(xiàn)合并同一ID對應多條數(shù)據(jù)的方法

    這篇文章主要介紹了mysql實現(xiàn)合并同一ID對應多條數(shù)據(jù)的方法,涉及mysql GROUP_CONCAT函數(shù)的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • 一步步教你如何使用mysql?binlog恢復數(shù)據(jù)

    一步步教你如何使用mysql?binlog恢復數(shù)據(jù)

    Binlog日志即binary?log,是二進制日志文件,有兩個作用,一個是增量備份,另一個是主從復制,下面這篇文章主要給大家介紹了關(guān)于如何使用mysql?binlog?恢復數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • mysql實現(xiàn)將字符串轉(zhuǎn)化成int類型

    mysql實現(xiàn)將字符串轉(zhuǎn)化成int類型

    這篇文章主要介紹了mysql實現(xiàn)將字符串轉(zhuǎn)化成int類型方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • MySQL查詢性能優(yōu)化方法匯總講解

    MySQL查詢性能優(yōu)化方法匯總講解

    這篇文章主要介紹了MySQL查詢性能優(yōu)化方法,Mysql查詢性能優(yōu)化要從三個方面考慮,庫表結(jié)構(gòu)優(yōu)化、索引優(yōu)化和查詢優(yōu)化,通常在實際應用中,我們要面對這三種攪和一起的情況,需要了解MySQL查詢性能優(yōu)化方法的朋友可以參考下
    2024-05-05
  • 解決遠程連接mysql很慢的方法(mysql_connect 打開連接慢)

    解決遠程連接mysql很慢的方法(mysql_connect 打開連接慢)

    有次同事提出開發(fā)使用的mysql數(shù)據(jù)庫連接很慢,因為我們的mysql開發(fā)數(shù)據(jù)庫是單獨一臺機器部署的,所以認為可能是網(wǎng)絡連接問題導致的。
    2011-07-07
  • mysql主從復制讀寫分離的配置方法詳解

    mysql主從復制讀寫分離的配置方法詳解

    一般來說mysql都是通過 主從復制(Master-Slave)的方式來同步數(shù)據(jù),再通過讀寫分離(MySQL-Proxy)來提升數(shù)據(jù)庫的并發(fā)負載能力 這樣的方案來進行部署與實施的。
    2018-04-04
  • Windows下mysql 8.0.11 安裝教程

    Windows下mysql 8.0.11 安裝教程

    這篇文章主要為大家詳細介紹了Windows下mysql 8.0.11安裝教程 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Mysql分片,大數(shù)據(jù)量時擴容解決方案

    Mysql分片,大數(shù)據(jù)量時擴容解決方案

    這篇文章主要介紹了Mysql分片,大數(shù)據(jù)量時擴容解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評論