2016-07-27 3 views

Antwort

0

Die einfachste Methode ist wahrscheinlich Variablen zu verwenden:

select ll.* 
from (select ll.*, 
      (@rn := if(@ln = lastname, @rn + 1, 
         if(@ln := lastname, 1, 1) 
         ) 
      ) as rn 
     from longlist ll cross join 
      (select @ln := '', @rn := 0) params 
     order by lastname 
    ) ll 
where rn <= 6; 
+0

Wo ist 'lastname' der Spaltenname? – jairbow

+0

@jairbow. . . Ja. –

+0

Ich wünschte wirklich, es wäre ein eingebauter Weg, dies zu tun, aber diese Methode macht genau das, wonach ich gefragt habe. – jairbow

0

Es gibt eine Menge Möglichkeiten, zu tun, was Sie wollen, einige von ihnen sehr kompliziert. Jede deterministische Methode wird rank the rows. Ihre Aufgabe ist es, die Tabelle mit sich selbst zu verbinden und zu entscheiden, was einen "Smith" weniger macht als einen anderen.

Sobald Sie die Namen sortiert haben, können Sie sie wieder mit der Tabelle verbinden (oder verwenden Sie where exists) und where rank < 7 oder was auch immer.

Verwandte Themen