回答

收藏

如果没有记录,如何使MySQL SUM查询返回零而不是null?

技术问答 技术问答 425 人阅读 | 0 人回复 | 2023-09-14

这是我的选择查询:
8 F& |' y# O  b2 p. b- z0 kSELECT SUM(rating) AS this_week 9 O/ a7 _2 p0 P; F) Z% F- p2 w$ t, I
FROM table_name
4 K5 M: D+ I* t. ^, g8 ^  b: bWHERE UNIX_TIMESTAMP(created_at) >= UNIX_TIMESTAMP() - 604800)
8 ~0 O: J, P1 S) R! D0 o基本上是计算上周的商品评分(604800是1周内的秒数)。
/ l% v9 p) q3 w) L8 @; X) W/ W问题是,当表中没有行时,this_week将作为NULL返回。如果表中没有行,我希望查询返回0。怎么做?  ]' P' a+ ^8 [
                  f  j3 F8 T6 s9 a# \
解决方案:
! q8 P, |0 L6 O/ `, j# P                8 X- D. {+ L4 Y9 A5 v( l) V4 n
1 ^. U6 I  X- u7 W- r
! n! s0 J! i5 s' C) B# S0 y* H/ w/ |# W
                这应该可以解决问题:  t" i6 t! x. D( R1 q
SELECT COALESCE(SUM(rating),0) AS this_week FROM table_name
) o# W0 X) f" H& j1 f. j  WHERE UNIX_TIMESTAMP(created_at) >= UNIX_TIMESTAMP() - 604800), J$ p! ~1 G% J& q0 l# ~8 u
COALESCE是一个函数,它将从列表中返回第一个非NULL值。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则