Oracle: einen Datensatz doppelt ausgeben

MAN

Erfahrenes Mitglied
[Oracle] Datensatz doppelt ausgeben

Hallo,

kann ich über einen Select einen Datensatz doppelt ausgeben lassen?

Beispiel, ich habe folgende Tabelle:

Code:
Nr     Typ
----------------
1      Haus
2      Auto
3      Tier
4      Mensch
5      Boot

Jetzt will ich folgendes Ergebnis haben:

Code:
Nr     Typ
----------------
3      Tier
3      Tier
4      Mensch

3 Zeilen ausgewählt.

Wie könnte so ein Select-Befehl aussehen?

Anmerkung: Ich brauche einfach nur zufällige Datensätze und es dürfen eben auch doppelte vorkommen.

Vielen Dank für eure Hilfe!


mfG,
MAN
 
Zuletzt bearbeitet:
Habe es mitlerweile selbst rausgefunden, wen es interessiert:

Code:
SELECT * FROM TB_SACHEN WHERE Nr=3
UNION ALL SELECT * FROM TB_SACHEN WHERE Nr=3
UNION ALL SELECT * FROM TB_SACHEN WHERE Nr=4

Ergebnis:

Nr     Typ
----------------
3      Tier
3      Tier
4      Mensch

3 Zeilen ausgewählt.
Trotzdem Danke an alle die, die mal reingeschaut haben ;)

mfG,
MAN
 
Dann würde ich in diesem Fall keinen rausbekommen, das ist richtig.

Aber ich benutze es auch ganz anders. Ich habe nämlich zuerst eine Abfrage, die mir alle IDs (Nr) zurückgibt. Aus diesem Pool von IDs suche ich mir dann zufällige raus, unter anderem können die dann eben auch doppelt vorkommen.

Somit habe ich das Problem nicht, dass es einen Datensatz (eine ID, Nr) nicht gibt!


mfG,
MAN
 
Ist aber leider nicht sonderlich performant deine Methode.
Oracle kann selbst zufällig Zeilen aus der Tabelle selektieren, zum Beispiel so:

Code:
SQL> select * from test sample(0.0001) seed (345);

        ID TXT
---------- ------------------------------
    337327 text337327
   3327580 text3327580
   3706701 text3706701
   4362958 text4362958
   4807398 text4807398
   6272814 text6272814
   6650360 text6650360
   7985606 text7985606
   8813896 text8813896

9 Zeilen ausgewõhlt.

Die Zahl im Sample gibt die Anzahl von Zeilen in Prozent der Gesamttabelle an.

Du musst lediglich den Seed jedesmal anders setzen, dann bekommst du auch andere Ergebnisse. Naja und wenn es unbedingt doppelte sein müssen kannst du immernoch ein union drüber machen, aber zumindest nicht alle ID`s vorher auslesen.
 
Zurück