例如我有一个像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。
感谢您的帮助!
答案 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
;