php - MySQL Prevent 求和两次

标签 php mysql pdo

我的 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/

相关文章:

PHP PDO 准备和执行

php - 根据用户ID在同一页面显示和编辑表单

php - 从 Google OAuth 2.0 PHP API 获取用户信息

php - Zend 路由反向匹配返回当前 URL

java - 在mysql中获取最后插入的自增id

php - Mysql同一行复制同一张表120次

mysql - 按天对 Unix 时间戳进行分组,产生不均匀间隔的组

PHP/MySQL : SyntaxError: JSON. 解析:JSON 数据第 1 行第 1 列出现意外字符

php - 删除到 table1 不产生错误

php - 调用未定义的函数 get_term_meta