2012-03-01 18 views
9

Próbuję wyświetlić RowID obok wszystkich kolumn z instrukcji Select *.Wyświetlanie identyfikatora RowID w Select * (all) Statement

Używam Oracle z Ropucha do uruchomienia instrukcji SQL.

Mam dwie tabele, które muszę porównać, ale nie mam żadnych unikalnych identyfikatorów do użycia podczas sortowania dwóch tabel w celu porównania. Pomyślałem więc, że użycie RowID do sortowania dwóch tabel w celu ich porównania może pomóc.

Czy istnieje sposób na dodanie RowID do instrukcji Select *? Nie mogę dodać wszystkich nazw kolumn, ponieważ jest ich ponad 50. Będę to robił dla wielu zestawów tabel, w których liczba i nazwa kolumn będą się różnić.

Każda pomoc lub pomysł na ten temat byłby bardzo cenny.

Dzięki z góry,

Marwan

+0

ROWIDTOCHAR może być używany do wyświetlania rowid. wybierz ROWIDTOCHAR (rowid) z

; –

+0

@ S.P. Czy korzystanie z 'ROWIDTOCHAR' jest zaletą podczas wyświetlania' ROWID'? –

+0

Pomaga, ponieważ konwertuje go do typu VARCHAR2. Jeśli chcesz zrobić coś takiego WYBIERZ ROWID Z GDZIE ROWIDTOCHAR (ROWID) LIKE '% %'; –

Odpowiedz

24

można zrobić coś takiego

SELECT rowid, a.* 
    FROM table_name a 

Ale nie jestem pewien, że faktycznie się pomóc. Sortowanie danych na ROWID nie będzie szczególnie przydatne, ponieważ jest to po prostu fizyczna lokalizacja na dysku. Jest tak samo arbitralny jak prezentowanie nieposortowanych danych.

+0

Dzięki. Spróbuję tego. Miałem wrażenie, że 'ROWID' jest generowany w kolejności sekwencyjnej. Dzięki za wytłumaczenie. –

+6

@Marwan - Z pewnością nie ma gwarancji, że będzie sekwencyjny. W przypadku małych tabel, które są ładowane tylko jeden raz i nigdy nie są modyfikowane, może wydawać się sekwencyjne, ale nie można na nich polegać. –

+0

Dobrze o tym wiedzieć. Dziękuję za poświęcenie czasu na wyjaśnienie mi tego.Będę pracował z małymi stolikami, ale jeśli się powiększą, będę musiała dowiedzieć się, co jeszcze mogę zrobić, jeśli "ROWID" przestanie działać dla mnie. Dzięki jeszcze raz. –