[英]Most closest value to database entry in mysql
我有一個與公寓實際大小相同的表字段,例如 55.74、66.27、80.43 ...
在搜索合適的記錄時,我想獲得按最接近該值排序的記錄列表。 如果用戶在搜索字段中輸入例如 65,那么記錄的順序將是:66.27(1.27 的差異)55.74(9.26 的差異)80.43(14.43 的差異)
找到此訂單的最佳方法是什么?
您可以將 orderby 子句設置為新列,在這種情況下類似於
orderby ABS(BlockSize - SearchValue) asc
ABS() 函數使所有負數變為正數,因此您的訂單會根據原始大小和搜索值之間的總差進行調整
IE
Block Sizes | Search Value | Order Column
500 | 200 | 300
100 | 200 | 100
300 | 200 | 100
200 | 200 | 0
因此,對於上面的顯示,如果您的搜索值為 200,它會將 Order Column 設置為按升序排列的數字的總差(或在本例中為 200、100、300、500)
它可以實現如下:
select ABS(colname-65) as t
FROM table name
Order by ABS(colname-65)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.