2012-04-11 10 views

Odpowiedz

15

Możliwym rozwiązaniem byłoby

  • obliczyć wartość bezwzględną każdej id gdzie odjąć swój identyfikator.
  • uporządkuj wyniki i ogranicz zestaw wyników do 5 rekordów.

komunikat SQL

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

Edit(thx do ypercube za wskazanie ewentualnej wadę w tym roztworze)

Jeśli intencją jest, aby 2 ID Pochodzi z po lewej i dwóch identyfikatorach od prawej strony, wyciąg można ustawić w następujący sposób:

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 i bootifol +1 –

+0

@NiftyDude - Foonny :) –

+1

Oczywiście masz na myśli 'ORDER BY ABS (id - @id)' '@ id' gdzie jest specyficzne id (' 9' w przykładzie) –

Powiązane problemy