sql >> Databasteknik >  >> RDS >> Mysql

SQL-valfönster runt en viss rad

Du skulle förmodligen bara kunna använda en UNION och sedan trimma bort de extra resultaten i procedurkoden som visar resultaten (eftersom detta kommer att returnera 20 rader i fall utan kant):

(SELECT 
     * 
FROM photos
   WHERE ID < #current_id#
   ORDER BY ID DESC LIMIT 10)
UNION
  (SELECT *
   FROM photos
   WHERE ID >= #current_id#
   ORDER BY ID ASC LIMIT 10)
ORDER BY ID ASC

EDIT:Ökad gräns till 10 på båda sidor av UNION, som föreslagits av le dorfier .

EDIT 2:Ändrad för att bättre återspegla den slutliga implementeringen, som föreslagits av Dominic.



  1. Oracle-sekvens som börjar med 2 istället för 1

  2. ett antal för varje join - optimering

  3. Ms-Access VBA Class Object Arrays

  4. COALESCE() för tomma (men inte null) fält