首页 > 数据库 > MySQL > 正文

MySQL SQL实现上下行相加减

2022-07-31 18:43:46
字体:
来源:转载
供稿:网友
      测试用表:
      CREATE TABLE `test` (
      `id` int(11) NOT NULL auto_increment,
      `value` int(11) default NULL,
       PRIMARY KEY  (`id`)
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8
 
 
随意加入测试数据:
mysql> SELECT * FROM test;
+------+-------+
| id   | value |
+------+-------+
|    1 |     2 |
|    2 |     5 |
|    3 |     6 |
|    4 |    10 |
+------+-------+
 
 
目的:
row2-row1
row3-row2
row4-row3 以此类推,输出。
 
先做个自连接,连接条件为id1=id2+1,让id1正好为id2的下一个自增。
mysql> SELECT a.id id1, b.id id2, a.value value1, b.value value22
    -> FROM test a JOIN test b ON a.id = b.id + 1;
+------+------+--------+---------+
| id1  | id2  | value1 | value2  |
+------+------+--------+---------+
|    2 |    1 |      5 |       2 |
|    3 |    2 |      6 |       5 |
|    4 |    3 |     10 |       6 |
+------+------+--------+---------+
3 rows in set (0.00 sec)
 
 
因为id1为id2的下一个自增,故value1-value2相减为最后的结果。
 
 
将上述的自连接结果集写作临时表,让value1与value2相减得到最后的结果:
mysql> SELECT value1 - value2 RESULT
    -> FROM (
    -> SELECT a.value value1, b.value value2
    -> FROM test a JOIN test b ON a.id = b.id + 1
    -> ) t;
+--------+
| RESULT |
+--------+
|      3 |
|      1 |
|      4 |
+--------+
3 rows in set (0.00 sec)
 
3、1、4即为 5-2、6-4、10-6。
同理可得上下行相加。
 

(编辑:错新网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表