我正在尝试计算来自数据库的值列表的差异。 我想使用 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/