php - MySQL计算出多个列中最低的一个

标签 php mysql

我有一张包含以下内容的表格:

+----+-------+-------+-----------+-----------+--------------+--------------+
| id | stock | price | usedStock | usedPrice | specialStock | specialPrice |
+----+-------+-------+-----------+-----------+--------------+--------------+
| #1 |     1 | 10.00 |         0 | 0         |            0 | 0            |
| #2 |     0 | 0     |         1 | 15.00     |            1 | 20.00        |
| #3 |     0 | 0     |         0 | 11.00     |            1 | 14.00        |
+----+-------+-------+-----------+-----------+--------------+--------------+

我想创建一个查询,如果商品类型有库存,则首先按最低价格订购。

因此查询将产生以下顺序:

#1 - 10.00 (because 10.00 is the lowest result)
#3 - 14.00 (because although 11.00 is less, it's not in stock)
#2 - 15.00 (because 15.00 is lower than 20.00)

我已将 PHP 标记添加到此问题,以防在选择表格后使用 PHP 进行计算的速度更快。

最佳答案

如果有货,我会以最低价格订购:

ORDER BY
  LEAST(CASE WHEN stock        THEN price        ELSE GREATEST(price, usedPrice, specialPrice) END,
        CASE WHEN usedStock    THEN usedPrice    ELSE GREATEST(price, usedPrice, specialPrice) END,
        CASE WHEN specialStock THEN specialPrice ELSE GREATEST(price, usedPrice, specialPrice) END)

如果条件为真(>=1),每个CASE WHEN都会返回价格,否则返回最大的价格。 fiddle here .

关于php - MySQL计算出多个列中最低的一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14678138/

相关文章:

php - 每次提交时存储包含多个部分的数据

php - 通过 API 发送耗时的脚本

PHP导入数据完整性

javascript - Ajax函数不发送数据onclick

php - 从mysql数据库授权用户

mysql - 将代码从 Oracle 8i 转换为 MySQL

mysql - 哪些使用 PostGIS 可以完成而使用 MySQL 无法完成的事情?

php - Woocommerce Hook 函数的第二个参数返回 NULL 而不是对象

php - 获取 MySQL WHERE IN 分隔字符串

php - 当从数据库中获取值时,如何从保管箱中选择选项值?