日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 使用sum limit_mysql踩坑记录之limit和sum函数混合使用问题

發(fā)布時間:2025/3/12 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 使用sum limit_mysql踩坑记录之limit和sum函数混合使用问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

問題復(fù)盤

本次復(fù)盤會用一個很簡單的訂單表作為示例。

數(shù)據(jù)準備

訂單表建表語句如下(這里偷懶了,使用了自增ID,實際開發(fā)中不建議使用自增ID作為訂單ID)

CREATE TABLE `order` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘訂單ID‘,

`amount` decimal(10,2) NOT NULL COMMENT ‘訂單金額‘,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

1

2

3

4

5

插入金額為100的SQL如下(執(zhí)行10次即可)

INSERT INTO `order`(`amount`) VALUES (100);

1

所以總金額為10*100=1000。

問題SQL

使用limit對數(shù)據(jù)進行分頁查詢,同時使用sum()函數(shù)計算出當(dāng)前分頁的總金額

SELECT

SUM(`amount`)

FROM

`order`

ORDER BY `id`

LIMIT 5;

1

2

3

4

5

6

前面也提到了運行的結(jié)果,期待的結(jié)果應(yīng)該為5*100=500,然而實際運行的結(jié)果卻為1000.00(帶有小數(shù)點是因為數(shù)據(jù)類型)

問題排查

其實如果對SELECT語句執(zhí)行順序有一定了解的朋友可以很快確定為什么返回的結(jié)果為所有的訂單總金額?下面我會就問題SQL的執(zhí)行書序來分析問題:

FROM:FROM子句是最先執(zhí)行的,確定了查詢的是order這張表

SELECT:SELECT子句是第二個執(zhí)行的子句,同時SUM()函數(shù)也在此時執(zhí)行了。

ORDER BY:ORDER BY子句是第三個執(zhí)行的子句,其處理的結(jié)果只有一個,就是訂單總金額

LIMIT:LIMIT子句是最后執(zhí)行的,此時結(jié)果集中只有一個結(jié)果(訂單總金額)

補充內(nèi)容

這里補充一下SELECT語句執(zhí)行順序

FROM

ON

JOIN

WHERE

GROUP BY

HAVING

SELECT

DISTINCT

ORDER BY

LIMIT

解決辦法

遇到需要統(tǒng)計分頁數(shù)據(jù)時(除了SUM()函數(shù)外,常見的COUNT()、AVG()、MAX()、MIN()函數(shù)也存在這個問題),可以選擇使用子查詢來處理(PS:這里不考慮內(nèi)存計算,針對的是使用數(shù)據(jù)庫解決這個問題)。上面的問題解決方案如下:

SELECT

SUM(o.amount)

FROM

(SELECT

`amount`

FROM

`order`

ORDER BY `id`

LIMIT 5) AS o;

1

2

3

4

5

6

7

8

9

運行的返回值為500.00。

---------------------

mysql踩坑記錄之limit和sum函數(shù)混合使用問題

標簽:ODB???order???min???針對???charset???group???計算???mys???分頁查詢

本條技術(shù)文章來源于互聯(lián)網(wǎng),如果無意侵犯您的權(quán)益請點擊此處反饋版權(quán)投訴

本文系統(tǒng)來源:https://www.cnblogs.com/hyhy904/p/11072377.html

總結(jié)

以上是生活随笔為你收集整理的mysql 使用sum limit_mysql踩坑记录之limit和sum函数混合使用问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。