2012-03-01 158 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