查找最接近值的数字不起作用(SQL)

Posted

技术标签:

【中文标题】查找最接近值的数字不起作用(SQL)【英文标题】:Find the closest number to value not working (SQL) 【发布时间】:2020-05-05 16:06:38 【问题描述】:

我有以下 SQL 命令:

$sql = "SELECT TOP 1
        FROM products
        ORDER BY ABS( price - '$price' ) ASC LIMIT 1";

$result = $conn->query($sql);


while($row = $result->fetch_array())
    echo "\r\n";
    echo $row['price'];
    echo "\r\n";
 

我想要做的是在“价格”列中找到与局部变量 $price 最接近的数字。例如,当用户输入价格为 15000 时,我想在产品表的“价格”列中找到最接近的数字。不幸的是,这给了我这个问题:

php Fatal error:  Uncaught Error: Call to a member function fetch_array() on bool in C:\Users\rojto\Documents\clones\Techalo\techalo-improvements\database.php:25
Stack trace:
#0 main

有人可以帮帮我吗?

【问题讨论】:

TOP 在 mysql 中不是一个东西,所以你没有多大意义 【参考方案1】:

您应该在SELECT 子句中使用列名,而不是TOP 1

大概,你想要:

SELECT price
FROM products
ORDER BY ABS(price - :price) 
LIMIT 1;

请注意,这使用查询参数来传递目标价格值,而不是将其连接到查询字符串中。您可以查看this famous SO post 了解为什么以及如何避免 SQL 注入。

【讨论】:

ORDER BY ABS(price - :price) " : " 字符应该是 $? @TomášRoj:请查看我在回答中链接的帖子。

以上是关于查找最接近值的数字不起作用(SQL)的主要内容,如果未能解决你的问题,请参考以下文章

用于查找不同元素的 SQL 查询不起作用

信标接近检测器在iOS swift中不起作用

最短路径的四元数 slerp 不起作用

SQL 查询在 Excel 中不起作用,但在 Access 中起作用

SQL查询最接近某一值的数据

CNN培训多标签分类---不起作用