溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL SQL實(shí)現(xiàn)上下行相加減

發(fā)布時(shí)間:2020-08-10 14:28:47 來(lái)源:ITPUB博客 閱讀:891 作者:神諭丶 欄目:MySQL數(shù)據(jù)庫(kù)
測(cè)試用表:
  1. CREATE TABLE `test` (
  2.   `id` int(11) NOT NULL auto_increment,
  3.   `value` int(11) default NULL,
  4.   PRIMARY KEY  (`id`)
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8


隨意加入測(cè)試數(shù)據(jù):
  1. mysql> SELECT * FROM test;
  2. +------+-------+
  3. | id   | value |
  4. +------+-------+
  5. |    1 |     2 | 
  6. |    2 |     5 | 
  7. |    3 |     6 | 
  8. |    4 |    10 | 
  9. +------+-------+


目的:
row2-row1
row3-row2
row4-row3 以此類推,輸出。

先做個(gè)自連接,連接條件為id1=id2+1,讓id1正好為id2的下一個(gè)自增。
  1. mysql> SELECT a.id id1, b.id id2, a.value value1, b.value value22
  2.     -> FROM test a JOIN test b ON a.id = b.id + 1;
  3. +------+------+--------+---------+
  4. | id1  | id2  | value1 | value2  |
  5. +------+------+--------+---------+
  6. |    2 |    1 |      5 |       2 | 
  7. |    3 |    2 |      6 |       5 | 
  8. |    4 |    3 |     10 |       6 | 
  9. +------+------+--------+---------+
  10. 3 rows in set (0.00 sec)


因?yàn)閕d1為id2的下一個(gè)自增,故value1-value2相減為最后的結(jié)果。


將上述的自連接結(jié)果集寫作臨時(shí)表,讓value1與value2相減得到最后的結(jié)果:
  1. mysql> SELECT value1 - value2 RESULT
  2.     -> FROM (
  3.     -> SELECT a.value value1, b.value value2
  4.     -> FROM test a JOIN test b ON a.id = b.id + 1
  5.     -> ) t;
  6. +--------+
  7. | RESULT |
  8. +--------+
  9. |      3 | 
  10. |      1 | 
  11. |      4 | 
  12. +--------+
  13. 3 rows in set (0.00 sec)

3、1、4即為 5-2、6-4、10-6。
同理可得上下行相加。


作者微信公眾號(hào)(持續(xù)更新)
MySQL SQL實(shí)現(xiàn)上下行相加減

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI