mysql 由价格1,价格2,价格3到价格10字段,先找到不为0值的字段最小值,最小值前面为0的用第二个不为0值填充,最小值后面为0的用最小值填充
时间: 2024-03-22 16:42:58 浏览: 10
可以使用 MySQL 中的 CASE WHEN 语句和 CONCAT 函数来实现此需求。
假设您的表名为 `prices`,您可以使用以下 SQL 语句查询得到符合要求的结果:
```
SELECT
CASE
WHEN prices.价格1 != 0 THEN prices.价格1
WHEN prices.价格2 != 0 THEN prices.价格2
WHEN prices.价格3 != 0 THEN prices.价格3
WHEN prices.价格4 != 0 THEN prices.价格4
WHEN prices.价格5 != 0 THEN prices.价格5
WHEN prices.价格6 != 0 THEN prices.价格6
WHEN prices.价格7 != 0 THEN prices.价格7
WHEN prices.价格8 != 0 THEN prices.价格8
WHEN prices.价格9 != 0 THEN prices.价格9
ELSE prices.价格10
END AS 最小值,
CONCAT(
LPAD(
SUBSTRING_INDEX(
prices.最小值, '.', 1
),
LENGTH(prices.最小值) - LENGTH(SUBSTRING_INDEX(prices.最小值, '.', -1)) - 1,
'0'
),
'.',
SUBSTRING_INDEX(prices.最小值, '.', -1)
) AS 填充后结果
FROM prices
```
上述 SQL 语句中,`CASE WHEN` 语句用于查询不为 0 的最小值,`CONCAT` 函数用于填充符合要求的最小值。其中,`SUBSTRING_INDEX` 用于获取小数点前后的两部分,`LENGTH` 用于获取字符串长度,`LPAD` 用于在字符串前填充指定字符。
请注意,在上述 SQL 语句中,字段名需要使用反引号 `` ` `` 包裹,因为其中包含了数字等特殊字符。