gpt4 book ai didi

php - MySQL 查询用数字排序

转载 作者:行者123 更新时间:2023-11-29 05:39:49 26 4
gpt4 key购买 nike

我有以下查询:

$result = $mysqli->query('SELECT DISTINCT SKU_SIZE_PART1 
FROM SKU_DATA
WHERE SKU_BRANDNAME = "'.$brand.'"
ORDER BY SKU_SIZE_PART1 DESC');

while( $row = $result->fetch_assoc()){
$sku_size1 = $row['SKU_SIZE_PART1'];

echo $sku_size1;
}

基本上发生的事情是……顺序全乱了。这是出现的结果:

9.50, 8.75, 8.00, 7.50, 7.00, 37, 35, 33, 325, 32, 315, 31, 305, 30, 295

325 应该首先出现,然后是 315,依此类推。

我该怎么做才能实现这一点?

最佳答案

您需要将 sku_size_part1 转换为 float 。

这会减慢您的查询速度,但它会起作用:

$brand = mysqli_real_escape_string($brand);
$result = $mysqli->query("SELECT DISTINCT sku_size_part1
FROM sku_data
WHERE sku_brandname = '$brand'
ORDER BY CAST(sku_size_part1 AS FLOAT) DESC");

这会减慢查询速度,因为 MySQL 将无法使用索引进行排序,而使用函数可以防止这种情况发生。

更好的解决方案(如果可能) 是将 sku-size_part1 重新定义为小数 (10,2)。

-- Make a backup first --
ALTER TABLE sku_data CHANGE sku_size_part1 DECIMAL(10,2);

(确保第一个参数 (10) 和第二个参数 (2) 足够大以容纳所有可能的值。)
请参阅:http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html

关于php - MySQL 查询用数字排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7652763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com