Zufällige Elemente "Selecten"

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Hallo.

Kann ich bei einem Select-Befehl irgendwas ähnliches wie zb. ORDER BY RAND() machen? Ich möchte die Einträge also in zufälliger Reihenfolge bekommen.

Geht das irgendwie?

Gruß sprudel
BlackJack

Wenn die Datenbank so etwas wie eine `random()`-Funktion kennt, könntest Du folgendes probieren:

Code: Alles auswählen

SELECT foo, bar, baz, RANDOM() as rnd
FROM tabelle
WHERE bedingung
ORDER BY rnd;
Sauber oder portabel ist das wahrscheinlich nicht. :-)
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Wenn du ohnehin alle Einträge beziehst, kannst du die auch in Python durcheinander würfeln, damit bist du bzgl. der Datenbank unabhängiger. Ich meine mich zu erinnern, dass es da keinen allgemeinen Weg über SQL gibt.
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Also ich verwende SQLite.

Wie kann ich die den in Python durcheinanderwürfeln?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

sprudel hat geschrieben:Also ich verwende SQLite.
Hi sprudel!

Dann sollte diese SQL-Anweisung funktionieren:

Code: Alles auswählen

SELECT 
    foo, bar, baz
FROM 
    tabelle
ORDER BY 
    RANDOM()
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Hi gerold. Vielen Vielen Dank, das war genau das was ich gesucht hab :-) Jetzt funktioniert alles einwandfrei. Danke
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

sprudel hat geschrieben:Also ich verwende SQLite.

Wie kann ich die den in Python durcheinanderwürfeln?
`random.shuffle()` vertauscht eine Liste zufällig.
Antworten