Dass SQL nicht nur was mit Webentwicklung zu tun hat, dürfte den meisten Leuten klar sein, denke ich. *schulterzuck*
Zu deinem Problem: Du hast zum Teil recht (was die spezielle Abfrage angeht) und ich hab recht (was das Allgemeine über SQL angeht, das mit den inneren Queries hast du imho noch etwas missverstanden). Tatsächlich macht meine Abfrage Zicken, wenn die Situationen sehr speziell sind.
Ich hab mal ne Testtabelle "test" angelegt mit 10 (ids 1-10) Zeilen mit ner Spalte "wert". Das Query ist also:
Beispiel 1: Die 10 Zeilen haben die Werte 10 bis 100:
Dann ist das Ergebnis korrekterweise 5, 50
Beispiel 2: Alle Zeilen haben den Wert 10
Kein Ergebnis (0 Zeilen)
Beispiel 2: Die Zeilen haben die Werte 10,10,10,20,20,30,40,50,60,70
Kein Ergebnis (0 Zeilen)
Das kommt daher, dass er genau 4 Zeilen finden will, die kleiner sind, in all diesen Fällen gibts aber mehr als 4 für die richtige Zeile. Einfach >= setzen geht auch nicht, weil er dann ALLE Zeilen ausgibt die größer sind (und wenn wir Limit hätten, hätten wir das Problem ja nicht).
Die folgende Query könnte etwas besser sein, langsam wirs aber reichlich lächerlich (und in der Arbeit hätte ich auch schon lange zu nem Datenbank-spezifischen Befehl gegriffen *g*)...