1
版本:9.4.2 PostgreSQL的PostgreSQL的:意外插入結果
Column | Type | Modifiers
------------+---------+----------------------------------------------------------------
id | integer | not null default nextval('T1_id_seq'::regclass)
name | text |
value | text |
parent_id | integer |
Indexes:
"T1_pkey" PRIMARY KEY, btree (id)
"T1_id_idx" btree (id)
我有兩個表像這樣在PostgreSQL,說T1和T2與像數據結構從自己的表中引用的數據樹。
我需要修改T1中的一些行,並將其按照T1中的行出現的順序插入到T2中。到目前爲止,我所做的是將表T1中的相關行復制到臨時表T3中以進行數據修改,並在進行更改時插入從T3到T2的所有內容。
T3使用
CREATE TABLE T3 (LIKE T1 INCLUDING ALL)
INSERT * INTO T3 SELECT * FROM T1
最終的結果創建的比較奇怪。來自T3的所有數據都被複制到T2,但ID的順序似乎是隨機的。
但是,如果我調用相同的腳本直接將數據從T1複製到T3,則結果是正確的。什麼是更離奇的是它也是正確的,如果,如果我使用INSERT方法拆分上面的腳本分成兩個獨立的腳本
- 創建一個從T1 T3和T1的數據複製到T3
- 複製T3到T2。
任何線索?
關係數據庫中的行不是***排序的。所以「* id的順序似乎是隨機的*」完全可以,因爲沒有「*行的順序*」之類的東西。唯一的,(真的:只有**)獲得特定訂單或行的方法是在'select'語句中使用'order by' –
http://stackoverflow.com/a/17762282/330315 –