2010-01-30 61 views
1

我有一張桌子,我希望更新某個欄位的值。(SQL)是否可以使用上一行中字段的值更新字段值?

基本上移動一個值,它下面的值應該繼承關於它們的值。

我不知道這個動作是否可以使用單個SQL查詢。

我的表:

CREATE TABLE `menu` (
    `slot_index` int(2) NOT NULL, 
    `language_ID` int(2) NOT NULL, 
    `menuItem` text NOT NULL, 
    PRIMARY KEY (`slot_index`,`language_ID`), 
    KEY `language_ID` (`language_ID`) 
) 

在它的內容:

INSERT INTO `menu` (`slot_index`, `language_ID`, `menuItem`) VALUES 
(1, 1, 'Home'), 
(2, 1, 'Wie zijn wij'), 
(21, 1, 'Missie'), 
(22, 1, 'Doelen'), 
(23, 1, 'Visie'), 
(24, 1, 'Test'), 
(3, 1, 'Wat doen wij'), 
(31, 1, 'Medische kaart voor op reis'), 
(32, 1, 'Huisartsenkaart'), 
(33, 1, 'Huisartsenkaart anderstaligen'), 
(4, 1, 'Perskamer'), 
(5, 1, 'Beheer'), 
(6, 1, 'FAQ'), 
(7, 1, 'Ervaringen'), 
(8, 1, 'Contact'), 
(81, 1, 'Disclaimer'), 
(9, 1, 'Links'), 
(91, 1, 'Adresgegevens') 

我想移動slot_index 5〜9,使場下往上移動,繼承來自上面的字段的值。

這可能與一個單一的查詢,或者我應該只是寫一個腳本?

在此先感謝。

Wolfert

+2

如果您覺得需要更改主鍵的值,那麼該字段可能不應該是主鍵的一部分。 – 2010-01-30 23:25:19

+0

另外,你有沒有想過如何爲該排序順序編寫ORDER BY子句?你不能只使用ORDER BY slot_id。你怎麼解決這個問題的?當菜單中有9個以上的項目時會發生什麼? – 2010-01-30 23:30:46

+0

我還建議你閱讀這個頁面在MySQL中存儲heirarchical數據:http://dev.mysql.com/tech-resources/articles/hierarchical-data.html – 2010-01-30 23:32:28

回答

1

也許使用自動增量將有助於未來的使用。

至於目前的我懷疑這可以與單一查詢,因爲你不能查詢你想要更新的表。

+0

感謝您的回覆,但自動增量無法選擇,因爲我需要將每個數字作爲主要插槽,而每個第二位數字應指示子插槽。 – Wolfert 2010-01-30 23:43:19

相關問題