Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
test=*# select * from foo order by s desc;
s
----
10
10
9
8
7
6
5
4
3
2
1
(11 rows)
Soll dann 10 oder 9 kommen?
Falls Du hier 9 erwartest dann ist das ein Fall für dense_rank():
Code:
test=*# select * from foo order by s desc;
s
----
10
10
9
8
7
6
5
4
3
2
1
(11 rows)
Time: 0,191 ms
test=*# select * from (select *, dense_rank() over (order by s desc) from foo order by s desc) x where dense_rank = 2;
s | dense_rank
---+------------
9 | 2
(1 row)
Kann MySQL nicht, Du müßtest vorher ein Unique machen. Das nur als Hinweis.
Passt!
SELECT * FROM `table` ORDER BY `column` DESC LIMIT 1 OFFSET 1
Vielen Dank
EDIT: Für den Fall, dass der höchste Wert zwei mal vorkommt, geb ich mich mit dem höchsten auch zufrieden, das wäre in Ordnung für mein Belangen.
Ansonsten lässt sich bestimmt eine oder mehrere If-Klausel(n) einbauen. z.B. (Wenn höchster Wert=zweithöchster Wert) DANN dritthöchster Wert.
streich in #3 das unique und ersetze es mit distinct:
Code:
test=*# select * from foo order by s desc;
s
----
10
10
9
8
7
6
5
4
3
2
1
(11 rows)
Time: 0,195 ms
test=*# select distinct s from foo order by s desc limit 1 offset 1;
s
---
9
(1 row)
[code]
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
Diese Seite verwendet Cookies, um Inhalte zu personalisieren und dich nach einem Login angemeldet zu halten, wenn du registriert bist.
Durch die weitere Nutzung unserer Webseite erklärst du dich damit einverstanden.