mysql 由价格1,价格2,价格3到价格10字段,先找到不为0值的字段最小值,最小值前面为0的用第二个不为0值填充,最小值后面为0的用最小值填充
时间: 2024-03-22 12:42:54 浏览: 85
Mysql的一些方法
5星 · 资源好评率100%
好的,你的问题是关于MySQL的操作。如果我理解正确,你想要从一个表中的多个价格字段中找到最小值,并且对于最小值前面为0的字段,将其用第二个不为0值填充,对于最小值后面为0的字段,将其用最小值填充,是吗?
如果是这样,你可以使用MySQL的IF函数和LEAST函数来实现。以下是一个示例查询,假设你的表名为`prices`,价格字段为`price1`到`price10`:
```
SELECT
LEAST(
IF(price1 = 0, IF(price2 = 0, IF(price3 = 0, IF(price4 = 0, IF(price5 = 0, IF(price6 = 0, IF(price7 = 0, IF(price8 = 0, IF(price9 = 0, price10), price9)), price8)), price7), price6), price5), price4), price3), price2), price1
) AS min_price,
IF(price1 = 0, IF(price2 = 0, IF(price3 = 0, IF(price4 = 0, IF(price5 = 0, IF(price6 = 0, IF(price7 = 0, IF(price8 = 0, IF(price9 = 0, price10), price9)), price8)), price7), price6), price5), price4) AS fill_before,
IF(price10 = 0, IF(price9 = 0, IF(price8 = 0, IF(price7 = 0, IF(price6 = 0, IF(price5 = 0, IF(price4 = 0, IF(price3 = 0, IF(price2 = 0, price1), price2)), price3), price4), price5), price6), price7), price8), price9) AS fill_after
FROM prices;
```
上述查询将会返回一个名为`min_price`的列,其中包含了最小值,以及名为`fill_before`和`fill_after`的列,其中包含了填充后的值。请注意,在上述查询中,我们使用了多个IF函数来检查字段是否为0,并决定使用哪个字段来填充。这样做可能会导致一些性能问题,特别是当你有很多价格字段时。如果可能的话,最好将你的表结构进行修改,将价格字段转换为行而不是列。这样做将更容易地对价格值进行处理。
阅读全文