Mysql
 sql >> Database >  >> RDS >> Mysql

Trovare la corrispondenza numerica più vicina in un database a ciò che un utente ha inserito in php

SELECT ABS($user_value - numeric_field) as nearest, ...
FROM yourtable
ORDER BY nearest ASC
LIMIT 1

in pratica, prendi la differenza del campo numerico che desideri e il valore fornito dall'utente, quindi ordina in base alla differenza crescente e quindi restituisce la prima riga.

Quindi una corrispondenza esatta avrebbe una differenza di 0 e verrebbe fuori per prima. E poi scegli quello che è "più vicino" se non c'è una corrispondenza esatta.