php - 用 sql 或 php 解决这个问题 - 性能

标签 php mysql sql

我有一个表格,其中有很多行看起来像这样:

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/

相关文章:

Mysql CASE 和 UPDATE

sql - PHPMyAdmin - 总记录数各不相同

php - Swift 上传多张图片到 PHP 服务器

php - 密码保护页面?(具有数据库访问权限)

php - MySQL/PHP 分页问题 - 不会转到第二页

python - 如何为 Airflow 连接显式声明 charset=utf8

mysql - SQL中连接垂直表和水平表的最佳方法

mysql - 如何更改更新语句中的列集

javascript - 如何将我的 Bootstrap 按钮链接到从客户端接收数据的 php 代码

php - 用于填充字母表词汇表的 MySQL 单个查询