2014-03-31 81 views
1

我有一個數據庫有3列(node_id,node_parent,title)。現在,我試圖找出複製節點並保留父節點ID的最佳方法。MySQL樹結構數據庫 - 複製節點的最佳方式是什麼?

這裏就是我的意思是:

enter image description here

我想用PHP遞歸做,並通過每個節點和兒童運行,但在我看來,它不是最優化的。僅僅使用MySQL查詢可以做到這一點嗎?

回答

0

如果你想添加一個新行保持node_parenttitle使用一個單一查詢現有的行,這應該工作:

INSERT INTO <table> SELECT NULL, node_parent, title FROM <table> WHERE id = 1; 

注意,node_id列應設置爲AUTO_INCREMENT

+0

我應該寫'重複'而不是'複製'。我想只爲我想要複製的節點保留node_parent。該節點下的其他每個孩子都應具有剛複製的節點的parent_id。我想知道如果我只能用mysql來做到這一點。 – Cris

0

需要複製多少個關卡?如果只有一個,則可以執行以下操作:

INSERT INTO table1 SELECT NULL,node_parent, title FROM table1 WHERE id=2; 
INSERT INTO table1 SELECT null,LAST_INSERT_ID(),title FROM table1 where node_parent=2; 

如前面提到的海報,node_id應該是AUTO_INCREMENT。

相關問題