在MySQL中如何根据id和value列计算速率

时间:2012-04-01 21:41:17

标签: mysql

例如我有一个像MyTable这样的表:

  

Id价值率

     

1 10

     

2 30

     

3 40

     

4 60

     

5 100

费率定义为:Rate = [Value(id) - Value(5)] / [5-id],id为1到4。

我正在考虑这样做:

  

INSERT INTO MyTable(Id,Rate)

     

SELECT Id,

??? real work goes here
     

FROM MyTable

     

LIMIT 4

     

ON DUPLICATE KEY UPDATE Rate = VALUES(Rate);

但有人可以帮助我如何做“率”部分吗?谢谢!

另一件事,如果我像这样定义Id:

  

Id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY

程序是否可以指定Id的值不连续,例如Id的值如下:1,2,4,5,6?我问,因为如果这是可能的,我的程序将会失败,因为我认为Id值是连续的。

另外,Id的值是否可能不是从1开始?例如,Id的值如下:2,3,4,5,6?我问,因为如果这是可能的,我的程序将失败,因为我假设Id值始终从1开始,如果有五行,则最后一个将是5。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你可以写:

UPDATE MyTable
   SET Rate =
         ( Value - (SELECT Value From (SELECT Value FROM MyTable WHERE id = 5) AS t) )
         / (5 - id)
 WHERE id BETWEEN 1 AND 4
;