我有这个MySQL查询: + l2 F8 c, z6 {' Y6 y6 rSELECT DAYOFYEAR(`date`) AS d, COUNT(*) % {; j! [) @/ ^; n
FROM `orders` % W$ S7 f( c+ h+ y* n8 [# LWHERE `hasPaid` > 0* q! c6 E9 L n% B5 m2 D& d
GROUP BY d . X v: e5 T B. ~# M( i- w) QORDER BY d 2 E( W3 ?! m: p! V) _返回如下内容: \) B! R9 ~& z, c3 b) g# y
d | COUNT(*) |% j* a1 U2 q/ x, Y
20 | 5 |/ z7 l/ C; o3 i6 x5 s9 r% Z, x. H
21 | 7 |7 P2 s1 u! b& ~9 C4 x
22 | 12 |9 S' N0 _7 u4 X5 Q+ x
23 | 4 | 1 ^9 l. x7 I5 |我真正想要的是末尾的另一列以显示运行总计: . @# b% _ ]7 X/ \! S* n% cd | COUNT(*) | ??? |, a) w4 Y; U; g" v: Y3 s" v3 R
20 | 5 | 5 | 2 c6 m) l- J/ B21 | 7 | 12 | . A; O; k U9 Q2 i5 \. R22 | 12 | 24 | : ^1 f- z. E3 ~8 ~23 | 4 | 28 |' }0 T" o% b. z
这可能吗? / }1 Q) L2 w8 Z' `/ M 3 c1 n) S4 P" K解决方案: ! l& u( _+ S' f; Q / l2 P C0 ?6 e% w
5 P% S3 r, W" G ~" v7 R 0 l/ J% H) K5 U 也许对您来说是一个更简单的解决方案,并且可以防止数据库不得不执行大量查询。这仅执行一个查询,然后在一次通过中对结果进行一些数学运算。) p6 y5 ~, y8 D; O
SET @runtot:=0; 9 w y1 `+ @, u h; w% bSELECT 6 n, \% ^& F6 x2 ^6 P3 j q1.d,5 I9 B3 j8 M# }: E
q1.c,8 U. m$ O( r9 v; E. ^9 p
(@runtot := @runtot + q1.c) AS rt% U+ {/ E; e. ~/ V- w- ~, r2 B
FROM' F1 N7 s( D$ h3 @3 {
(SELECT / j- O: H2 `- P$ s% Z7 l, M5 p DAYOFYEAR(`date`) AS d, 4 {! [# n# p5 @" P& f COUNT(*) AS c 5 J' d2 l' _; x2 N+ S FROM `orders` 6 X' u( P$ p; O% A, S% v9 c# h WHERE `hasPaid` > 0 3 _0 r, f3 s/ t: B6 B( f+ ~7 C GROUP BY d ( V: ?$ I; \; y4 P" l5 W4 f1 i! C5 d ORDER BY d) AS q15 T: n+ _+ c* t/ V0 r" T7 x. d4 {
这将为您提供一个额外的RT(运行总计)列。不要错过顶部的SET语句来首先初始化运行中的total变量,否则您将只获得一列NULL值。