2011-10-26 66 views
0

我在比較PostgreSQL中的兩個選擇時遇到問題。我正在通過JDBC執行這些選擇,然後通過將結果集中的數據插入到新表中來創建新表。我這樣做是因爲我想避免具有相同名稱的列,如「count」。然後我必須比較這些表中的數據。基於它們的相對位置比較表列

問題是這些表應該是相同的,如果相同的數據具有不同的列順序。例如,如果表t1t2中有3列(1,2,3),如果t1.1 = t2.2t1.2 = t2.1t1.3 = t2.3這些表格是相同的。

+0

這兩個表中是否有重複行?如果有的話,你想如何處理這種情況? 'Table1有2行的副本,Table2有同一行,但只有它的一個副本' – MatBailie

+0

沒有順序。列有名字。請解釋你打算做什麼。 – wildplasser

回答

2

行內的列順序在創建時確定。如果你做一個

SELECT * FROM tbl; 

TABLE tbl; 

你得到你所創建的表列的順序。如果您在SELECT中指定專欄,您可以按照明確的順序獲得專欄。

您必須總是拼出您用於像您的操作的列。如果稍後改變某個表中的列順序,它可能會中斷。不要依靠*

爲了在SELECT的是不確定只要你不包括ORDER BY條款。如果你想要一個特定的訂單,你必須ORDER BY一個主要或唯一的列(或獨特的列組合)。如果您通過一組非唯一的列進行排序,則同一個鍵的組內的行再次處於不確定的順序。

SELECT col1, col2, col3 FROM tbl 
ORDER BY <unique column or set of oclumns>; 

請閱讀ORDER BY clause的使用說明書。