Announcement

Collapse
No announcement yet.

Zum Bespeil "Bei "doppelten" Datensätzen nur einen anzeigen" das Datensampel

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zum Bespeil "Bei "doppelten" Datensätzen nur einen anzeigen" das Datensampel

    Hi Leute,
    ich habe mit dem Beispiel etwas rumgespielt und folgendes auf die Liste angewendet


    SELECT a.id, a.name, a.last_use FROM doppeltest a ORDER BY a.name DESC LIMIT 5

    Ich erhalte:
    '1', 'Otto', '2010-07-01 20:30:24'
    '7', 'Otto', '2010-07-01 21:40:27'
    '4', 'Otto', '2010-07-01 19:24:29'
    '6', 'Max', '2010-07-01 09:36:54'
    '2', 'Kurt', '2010-07-01 21:42:54'
    Wie geht SQL zu Werke wenn DESC auf a.Name angewendet wird.

    O, M und K müsste die DESC Reihenfolge sein.

    O ist der höchste Buchstabe und OTTO ist 3 mal vorhanden.
    Wie geht DESC (bzw. SQL generell) weiter vor, wenn keine weiteren Unterscheidungen in a.NAME möglich sind.
    Wobei der Datensatz mit der '7' irgenwie falsch liegt.

    SQL scheint dann das Datum zu verwenden?

    Gibt es eine Regel in solchen Fällen?

    Danke vorab
    Bast

  • #2
    Gibt es eine Regel in solchen Fällen?
    Die Regel die du annehmen solltest wenn du nichts genaues spezifizierst lautet Zufall. Du solltest also weder eine bestimmte Reihenfolge, außer jetzt die die deine Order by Klausel bestimmt, erwarten noch erwarten das die wiederholbar ist wenn du das SQL ein zweites mal ausführst. Natürlich ist es letztlich kein Zufall sondern die meisten DBs werden irgendwas nachvollziehbares tun aber es ist eben System- und Fallabhängig. SQL selbst spezifiziert da nix. Wenn du nach dem Namen nach der id sortiert haben möchtest nehme die Spalte auch in den Order by auf.

    Comment


    • #3
      Originally posted by Ralf Jansen View Post
      Die Regel die du annehmen solltest wenn du nichts genaues spezifizierst lautet Zufall. Du solltest also weder eine bestimmte Reihenfolge, außer jetzt die die deine Order by Klausel bestimmt, erwarten noch erwarten das die wiederholbar ist wenn du das SQL ein zweites mal ausführst. Natürlich ist es letztlich kein Zufall sondern die meisten DBs werden irgendwas nachvollziehbares tun aber es ist eben System- und Fallabhängig.

      ACK. Und manche Systeme wie z.B. PostgreSQL haben Mechanismen, die quasi für Zufall sorgen: gibt es 2 Clients A und B, welche die selbe Tabelle X abfragen, und A fragt etwas eher ab und hat vielleicht schon 10% der Daten bekommen und nun kommt B fragt auch die Tabelle X ab, so wird die DB nun an B erst einmal dasselbe liefern wie an A, also ab 10% bis zum Ende, und erst zum Schluß die ersten 10%. Performance-Optimierung halt.

      Comment


      • #4
        Ein 10 Zeichen langes, thx

        Comment

        Working...
        X