Reihenfolge beim Auslesen?
am 18.06.2006 13:51:30 von spam
Hallo,
wenn ich in eine Tabelle mehrere Datensätze ganz normal mit "insert into
...." eintrage und danach mit "select ... limit 1" und ohne jedes "order
by" wieder auslese, welchen Datensatz bekomme ich dann?
- den ältesten in der Tabelle
- den jüngsten aus der Tabelle?
- nach einem anderen Kriterium sortiert?
- irgend einen zufälligen?
Ich bin gerade unterwegs und kann das nicht ausprobieren, deshalb frage
ich hier. Danke.
Frank
Re: Reihenfolge beim Auslesen?
am 18.06.2006 14:08:55 von Thomas Rachel
Frank Esselbach wrote:
> wenn ich in eine Tabelle mehrere Datensätze ganz normal mit "insert
> into ..." eintrage und danach mit "select ... limit 1" und ohne jedes
> "order by" wieder auslese, welchen Datensatz bekomme ich dann?
>
> - irgend einen zufälligen?
mehr oder weniger ja - allerdings nicht echt zufällig.
Wenn Du nur die Tabelle ausliest, wie sie ist, ohne WHERE oder so, dann
wird es wohl die physikalische Reihenfolge sein. Verwendest Du WHERE in
Verbindung mit einem Index, so kann es sein, daà die Reihenfolge dieses
Indexes verwendet wird; bei JOINS zwischen Tabellen kann es nochmal ganz
anders aussehen und bei einem anderen Tabellenformat nochmal anders.
Man kann sich idR lso nicht auf die Reihenfolge verlassen, weshalb LIMIT
ohne ORDER BY eher wenig Sinn macht - es sei denn, es ist egal, welchen
Datensatz man zu einem gegebenen Kriterium bekommt.
> Ich bin gerade unterwegs und kann das nicht ausprobieren, deshalb frage
> ich hier.
Aus den obigen Gründen würdest Du mit Ausprobieren vermutlich nicht das
gesamte Spektrum an Möglichkeiten treffen - besser wäre Handbuch lesen
(bin jetzt aber zu faul, nachzusehen, ob da was von drinsteht...)
Thomas
--
> Nein, denn OE löscht dieses "überflüssige" Leerzeichen.
> Ja, es ist krank, furchtbar krank!
Oooh, das arme OEchen ;-)) (Dieter Bruegmann und Dirk Schneider in dnq)
Re: Reihenfolge beim Auslesen?
am 18.06.2006 14:09:19 von Christian Kirsch
Frank Esselbach schrieb:
> Hallo,
>
> wenn ich in eine Tabelle mehrere Datensätze ganz normal mit "insert into
> ..." eintrage und danach mit "select ... limit 1" und ohne jedes "order
> by" wieder auslese, welchen Datensatz bekomme ich dann?
>
> - den ältesten in der Tabelle
> - den jüngsten aus der Tabelle?
> - nach einem anderen Kriterium sortiert?
> - irgend einen zufälligen?
>
letzteres. Zufällig kann das auch der jüngste, der älteste oder der nach
irgendeinem anderen Kriterium sortierte sein.