wuscheck: MYSQL-Abfrage des Anfangsbuchstabens einer Spalte

Hallo,

ich würde gerne akkumuliert die Anfangsbuchstaben aller Nachnamen, die in meiner MYSQL-DB gespeichert sind, ausgeben.

Beispiel:
DB-Inhalt in der Spalte Name:
Meier
Mayer
Maier
Nordmann
Schulz

Ausgabe:
M
N
S

Any ideas?

Gruss

wuscheck

  1. Moin!

    Any ideas?

    Ja!

    http://dev.mysql.com/doc/refman/4.0/de/string-functions.html hilft Dir.

    Komplett  sieht das dann so aus:

    SELECT DISTINCT LEFT(spalte,1) AS Buchstaben FROM Tabelle ORDER BY Buchstaben;

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
  2. Hallo wuscheck,

    Any ideas?

    sowas:
    SELECT SUBSTRING(name,1,1) as anfang FROM tabelle GROUP BY anfang
    vielleicht?

    Grüße aus Nürnberg
    Tobias

    1. Moin!

      SELECT SUBSTRING(name,1,1) as anfang FROM tabelle GROUP BY anfang

      Hm. Ich hätte ja jetzt erwartet, dass meine Abfrage deutlich schneller wäre aber nach mehrmaligen Testen sind die Ergebnisse eher zufällig verteilt. Scheinbar wird die Abfrage intern optimiert.

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      --
      Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
      1. yo,

        Hm. Ich hätte ja jetzt erwartet, dass meine Abfrage deutlich schneller wäre aber nach mehrmaligen Testen sind die Ergebnisse eher zufällig verteilt. Scheinbar wird die Abfrage intern optimiert.

        sowohl GROUP BY als auch DISTINCT bzw. ORDER BY sind letztlich sortierungen, die das dbms ausführt. auch sollte immer ein full-scan ausgeführt werden. insofern sehe ich wenig interne optimierungsmöglichkeiten. aber deine version ist meiner meinung nach die "sauberere", zumal es dabei auch explizit eine sortierung durch ORDER BY gibt.

        Ilja