2016-05-22 8 views
0

Ich möchte eine Abfrage wie machen: durch nameSQL-Select-n pro Buchstabe des Alphabets

Die Bestellung wird natürlich sein alphabetisch select * from somefield Ordnung und ich würde für jeden Buchstaben der gleichartigen Alphabet, um nur 5 Treffer angezeigt zu werden. Ist das mit der Abfrage selbst möglich oder soll ich mit php Abfragen für jeden Buchstaben des Alphabets machen?

Die Anzahl der auf diese Weise zurückgegebenen Zeilen kann maximal 5 x 26 Zeilen lang sein.

+1

quel SQL? 'row_number() OVER (Partition nach LINKS (Name, 1)) xx ... WHERE xx <= 5' – wildplasser

Antwort

1

Die meisten Datenbanken unterstützen die Windows-ANSI-Standardfunktionen. Zu diesem Zweck können Sie row_number() verwenden:

select t 
from (select t.*, 
      row_number() over (partition by left(name, 1) order by name) as seqnum 
     from t 
    ) t 
where seqnum <= 5; 

Hinweis: Nicht alle Datenbanken unterstützen left(), Sie substr(name, 1, 1) oder substring(name, 1, 1) benötigen.

+0

Ich mache das in meinem phpmyadmin, aber das funktioniert nicht. Noch arbeitet die linke() oder die substr() dort. – Mart

Verwandte Themen