MySQL SQL实现上下行相加减
发布时间:2022-04-04 11:03:41 所属栏目:MySql教程 来源:互联网
导读:测试用表: 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 | +--
测试用表: 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。 同理可得上下行相加。 (编辑:爱站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐