2012-04-11 10 views

Respuesta

15

Una posible solución sería la de

  • calcular el valor absoluto de cada id donde se resta su identificación.
  • ordene los resultados y limite el conjunto de resultados a 5 registros.

instrucción SQL

SELECT ABS(ID - 9), * 
FROM MyTable 
ORDER BY 
     ABS(ID - 9) 
LIMIT 5 

Editar(gracias a ypercube por señalar un posible defecto en esta solución)

Si la intención es conseguir 2 ID del de la izquierda y dos identificadores de la derecha, la declaración se puede ajustar de la siguiente manera

SELECT * FROM MyTable WHERE ID <= 9 ORDER BY ID DESC LIMIT 3 
UNION ALL 
SELECT * FROM MyTable WHERE ID > 9 ORDER BY ID ASC LIMIT 2 
+1

simpool y bootifol 1 –

+0

@NiftyDude - Foonny :) –

+1

Por supuesto que quiere decir 'ORDER BY ABS (id - @id)' '@ id' donde es la identificación específica (' 9' en el ejemplo) –

Cuestiones relacionadas