php - 如何计算mysql中同一行的值之间的差异

标签 php mysql

我正在尝试计算来自数据库的值列表的差异。 我想使用 php 或 mysql 来实现它,但我不知道如何继续。 我有一个名为player_scores 的表。其中一行包含进球数。

例如。

pl_date         pl_scores
03/11/2014      18
02/11/2014      15
01/11/2014      10

我想回应不同日期比赛中进球之间的差异。

Ex:
pl_date       pl_scores    diff
03/11/2014     18          +3
02/11/2014     15          +5
01/11/2014     10          no diff

怎样才能得到想要的结果?

最佳答案

您似乎想要将分数与前一行的分数进行比较。

如果使用获取小于当前行 pl_date 的最大 pl_date 的子查询来完成,然后将该子查询的结果连接回player_scores 表以获取每个日期的详细信息,则可能是最简单的:-

SELECT ps1.pl_date, ps1.pl_scores, IF(ps2.pl_date IS NULL OR ps1.pl_scores = ps1.pl_scores, 'no diff', ps1.pl_scores - ps1.pl_scores) AS diff
FROM
(
    SELECT ps1.pl_date, MAX(ps2.pl_date) prev_date
    FROM player_scores ps1
    LEFT OUTER JOIN player_scores ps2
    ON ps1.pl_date > ps2.pl_date
    GROUP BY ps1.pl_date
) sub0
INNER JOIN player_scores ps1
ON sub0.pl_date = ps1.pl_date
LEFT OUTER JOIN player_scores ps2
ON sub0.prev_date = ps2.pl_date

可能还有其他方法可以做到这一点(例如,使用变量来处理有序子查询的结果,将每一行与存储在前一行变量中的值进行比较)

关于php - 如何计算mysql中同一行的值之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26736822/

相关文章:

php - 当属性名称包含不允许的字符时访问 PHP 对象属性

php - 如何访问 PHP 搜索结果页面?

mysql - 查询有问题。寻找一种优雅的方法来解决它

php - Mysql 事务未按预期工作

php - 将 GROUP_BY 与查询生成器和 mySQL >= 5.7 一起使用

php - 获取行数

php - Num rows 返回错误的数字

几何包的MySQL字符串编码

mysql - 在 MySQL 中附加类似 JSON 的字符串

javascript - 将选项卡显示为事件 php bootstrap js