我有一个表格,其中有很多行看起来像这样:
id-name-date---pcs
1 - x - 01-01 -10
2 - y - 01-01 -15
3 - z - 01-01 -8
4 - x - 02-01 -25
5 - y - 02-01 -10
6 - z - 02-01 -5
我想做的是一个查询,显示从一个月到一个月(在本例中是二月和一月)之间名称的个人电脑的发展/差异,如下所示:
id-name-pcs
1 - x - (15)
2 - y - (-5)
3 - z - (-3)
是否可以仅使用 sql 来执行此操作,还是我需要涉及 php?
如果我遍历所有行并在 php 中进行计算,是否会对服务器产生明显影响?
提前致谢!
编辑:括号不应该是查询结果的一部分。仅针对此主题。
最佳答案
我使用的技术是将表的一月部分与二月部分连接起来,然后找出差异。
请参阅下面的查询(假设 gsub
是您的表名)
SELECT
g1.id, g1.name, g2.pcs-g1.pcs `pcs`
FROM
gsub AS g1
INNER JOIN
gsub AS g2
ON
(g1.name=g2.name
AND
month(g1.`date`) = 1
AND
month(g2.`date`) = 2);
结果
+----+------+------+
| id | name | pcs |
+----+------+------+
| 1 | x | 15 |
| 2 | y | -5 |
| 3 | z | -3 |
+----+------+------+
关于php - 用 sql 或 php 解决这个问题 - 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9403603/