0
我有一個表,我需要更新所有記錄與從前一個記錄的值派生的值。SQL語法:派生一個列值爲更新,帳戶的值的前一列值
例如,給定三個字段id
,lft
和rgt
,我需要lft
是(((當前id
- 1)的lft
)+ 2)的值和rgt
爲值(((目前id
-1)的rgt
)+ 2)。我暗示擁有含義select lft where id=[current id-1]
和select rgt where id=[current id-1]
如何用適當的SQL語法表達這一點?
- 鑑於記錄的
id
是2
,該lft
將等於3
, 的rgt
將等於4
。 - 鑑於記錄的
id
是3
, 的lft
將等於5
,該rgt
將等於6
。 - 鑑於記錄的
id
是4
,將lft
將等於7
, 的rgt
將等於8
。
那麼簡單的算術運算(考慮到id
值,例如)不會輕易佔lft
和rgt
值。
謝謝,
馬特
[更新]
這是MySQL 5.1.52
。
不能'UPDATEŧ SET lft = 2 * id - 1,rgt = 2 * id'是否足夠? – Benoit 2012-03-06 17:08:10
你可以發佈一些樣本數據和預期的結果嗎? – Taryn 2012-03-06 17:08:48
那麼最低ID的記錄呢? – 2012-03-06 17:29:57