在“Select *”语句中显示行ID

21

我想在Select *语句中显示RowID和所有列。

我正在使用带有Toad的Oracle运行SQL语句。

我有两个需要进行比较的表,但我没有任何唯一的标识符可用于对两个表进行排序以进行比较。因此,我认为将RowID用于对两个表进行排序以进行比较可能会有所帮助。

是否有一种方法可以将RowID添加到Select *语句中?由于有50多个列,我无法添加所有列名称。我将对多组列不同的表执行此操作。

非常感谢您提供的任何帮助或想法。

提前致谢,

Marwan


ROWIDTOCHAR 可以用于显示行 ID。从 <表名> 中选择 ROWIDTOCHAR(rowid)。 - S.P.
@S.P. - 在显示ROWID时使用ROWIDTOCHAR有什么优势吗? - Marwan مروان
我不知道您的表设置如何,但是由于您似乎正在比较类似的表的内容,您是否看过MINUS?http://www.techonthenet.com/sql/minus.php - Tebbe
@S.P. - 听起来将来可能会有帮助。谢谢分享。 - Marwan مروان
@Tebbe - 谢谢Tebbe。我开始使用MINUS来获取“有问题”的行,但是然后我必须浏览数据以找出数据之间的差异。目前正在使用(而我被投入其中)的是一个Excel电子表格,它使用三个选项卡对两个表进行比较,一个用于每个表,第三个用于比较结果。用户希望能够对数据进行排序,以便分析两个表之间的数据差异。 - Marwan مروان
显示剩余3条评论
1个回答

46

你可以像这样做

SELECT rowid, a.*
  FROM table_name a

但我不确定这实际上会对你有所帮助。根据ROWID排序数据并不特别有用,因为它只是磁盘上的物理位置。这与未排序的数据一样任意。


谢谢。我会尝试的。我原本以为ROWID是按顺序生成的,感谢您澄清了这一点。 - Marwan مروان
6
@Marwan - 这绝对不是保证顺序的。对于只加载一次且从未修改的小表,它可能看起来是按顺序的,但不应依赖此特性。 - Justin Cave
知道这点很好。感谢您抽出时间为我澄清这一点。我将使用小表进行工作,但如果它们变得更大,我将不得不想办法解决如果ROWID对我不起作用的情况。再次感谢。 - Marwan مروان
1
这是一篇不错的文章,可能会很有用。http://www.adp-gmbh.ch/ora/concepts/rowid.html - S.P.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接