我的 PHP 脚本中有以下查询:
SELECT SUM(score) + 1200 AS rating
FROM users_ratings
WHERE user_fk = ?
问题在于,如果用户在表中没有任何行,则评级返回为 NULL
。所以我添加了一个 if 案例:
SELECT IF(SUM(score) IS NULL, 0, SUM(score)) + 1200 AS rating
FROM users_ratings
WHERE user_fk = ?
但现在我想知道如何在不重复 SUM(score)
的情况下进行查询。我猜如果我有很多行,总和会重复两次,这会影响应用程序的性能。
最佳答案
这里有一个更简单的方法:
SELECT ( COALESCE(SUM(score), 0) + 1200 ) AS rating
FROM users_ratings
WHERE user_fk = ?;
COALESCE()
是一个 ANSI 标准函数,它返回表达式列表中的第一个非 NULL
值。
然而,两次计算 SUM(score)
的额外开销——即使发生了——与查询的其余部分(查找数据、读入数据、将其总结为一行)。
关于php - MySQL Prevent 求和两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45785005/