2016-04-22 20 views
0

ich eine Tabelle, die wie folgt aussieht:MySQL ROW_NUMBER für mehrere Spalten

+-------------+--------+------------+ 
| Employee ID | Salary | Grievances | 
+-------------+--------+------------+ 
| 101   | 70,000 | 12   | 
| 102   | 90,000 | 100  | 
| ...   | ... | ...  | 
+-------------+--------+------------+ 

Und ich alle Mitarbeiter finden wollen, die in der Top-Ten- für Gehalt, aber die Boden-five für Beschwerden. Ich (denke ich) weiß, wie dies in SQL Server mit ROW_NUMBER zu tun, aber wie es in MySQL zu tun? Ich habe die goto question dabei gesehen, aber es gilt nicht wirklich für eine mehrspaltige Bestellung.

+0

Können Sie mehr über erarbeiten „Top-Ten für Gehalt, aber der Boden-five für Beschwerden.“ mit Beispieldaten oder Ausgabe erforderlich – geeksal

+0

Sie möchten Beispieldaten und gewünschte Ergebnisse oder sogar die SQL Server-Abfrage bereitstellen. –

+0

Ich dachte, es war ziemlich selbsterklärend. Ergreifen Sie alle Mitarbeiter, deren Gehalt zu den zehn höchsten Gehältern gehört UND deren Anzahl an Beschwerden zu den fünf niedrigsten zählt. –

Antwort

1

Wenn ich richtig verstehe, können Sie dies mit einem selbst beitreten:

select s.* 
from (select t.* 
     from t 
     order by salary desc 
     limit 10 
    ) s join 
    (select t.* 
     from t 
     order by grievances asc 
     limit 5 
    ) g 
    on s.employeeid = g.employeeid; 
+0

Perfekt, danke! –