Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql中与数据库项最接近的值_Php_Mysql - Fatal编程技术网

Php mysql中与数据库项最接近的值

Php mysql中与数据库项最接近的值,php,mysql,Php,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()函数使所有负数变为正数,因此您的顺序将根据原始大小和搜

我有一个实际公寓大小的表字段,比如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()函数使所有负数变为正数,因此您的顺序将根据原始大小和搜索值之间的总差值进行调整

i、 e


因此,对于上述显示,如果搜索值为200,则会将Order列设置为升序数字的总差值(或在本例中为200、100、300、500)

可以按如下方式实现:

  select  ABS(colname-65) as t
  FROM table name
  Order by ABS(colname-65)

虽然ORDERBY子句是正确的,但很明显,这个示例查询的其余部分是正确的wrong@Strawberry,根据什么你说查询是错误的?只是这样一个查询的结果对任何人都没有多大用处,因为OP没有提到他想要的结果,所以我提供了同样的示例查询。。。OP可以在selectWell中添加他想要的任何列,OP希望得到与给定值最接近的结果。
  select  ABS(colname-65) as t
  FROM table name
  Order by ABS(colname-65)