2012-03-01 156 views
9

我試圖在Select *語句的所有列旁邊顯示RowID。在Select *(all)語句中顯示RowID

我正在使用Oracle和Toad來運行SQL語句。

我有兩個表,我需要比較,但我沒有任何唯一的標識符使用時,排序兩個表進行比較。所以我認爲使用RowID對兩個表進行排序以便比較它們可能會有所幫助。

有沒有辦法將RowID添加到Select *語句中?我無法添加所有列名稱,因爲有超過50個。我將這樣做到多個表的列數和名稱會有所不同。

任何幫助或想法周圍將不勝感激。

由於提前,

馬爾

+0

ROWIDTOCHAR可用於顯示rowid。從

中選擇ROWIDTOCHAR(rowid); – 2012-03-01 18:12:23

+0

@ S.P。 - 顯示'ROWID'時使用'ROWIDTOCHAR'有沒有好處? – 2012-03-01 18:46:01

+0

它有幫助,因爲它將它轉換爲VARCHAR2類型。如果你想做這樣的事情SELECT ROWID FROM WHERE ROWIDTOCHAR(ROWID)LIKE'%%'; – 2012-03-01 18:55:43

回答

24

你可以做這樣的事情

SELECT rowid, a.* 
    FROM table_name a 

但我不知道,實際上是要幫助你。對ROWID上的數據進行排序不會特別有用,因爲這只是磁盤上的物理位置。這與提交未排序數據一樣任意。

+0

謝謝。我會嘗試。我的印象是「ROWID」是按順序生成的。感謝澄清。 – 2012-03-01 18:19:45

+6

@Marwan - 絕對不能保證順序。對於只加載一次且從不修改的小表,它可能看起來是連續的,但不應該依賴它。 – 2012-03-01 18:24:14

+0

這是很好的知道。感謝您花時間爲我澄清這一點。我將與小桌子一起工作,但如果它們變得更大,我將不得不弄清楚,如果「ROWID」停止工作,我還能做些什麼。再次感謝。 – 2012-03-01 19:09:28