mysql 由价格1,价格2,价格3到价格10字段,判断不为0的值的两个字段,中间为0值用第二个不为0的值或没有第二个不为0的值用前一个不为0的值填充
时间: 2024-03-22 16:42:07 浏览: 39
可以使用 MySQL 的 IF 函数和 CASE 函数来实现这个需求。
下面是一种可能的实现方式:
```
SELECT
IF(价格1 <> 0, 价格1, IF(价格2 <> 0, 价格2, IF(价格3 <> 0, 价格3, IF(价格4 <> 0, 价格4, IF(价格5 <> 0, 价格5, IF(价格6 <> 0, 价格6, IF(价格7 <> 0, 价格7, IF(价格8 <> 0, 价格8, IF(价格9 <> 0, 价格9, IF(价格10 <> 0, 价格10, NULL)))))))))) AS 不为0的值,
CASE
WHEN 价格1 <> 0 AND 价格2 <> 0 THEN 价格2
WHEN 价格2 = 0 AND 价格3 <> 0 THEN 价格3
WHEN 价格3 = 0 AND 价格4 <> 0 THEN 价格4
WHEN 价格4 = 0 AND 价格5 <> 0 THEN 价格5
WHEN 价格5 = 0 AND 价格6 <> 0 THEN 价格6
WHEN 价格6 = 0 AND 价格7 <> 0 THEN 价格7
WHEN 价格7 = 0 AND 价格8 <> 0 THEN 价格8
WHEN 价格8 = 0 AND 价格9 <> 0 THEN 价格9
WHEN 价格9 = 0 AND 价格10 <> 0 THEN 价格10
ELSE NULL
END AS 第二个不为0的值
FROM 表名;
```
这个查询语句会将每行记录中不为0的值作为第一个结果列,并将第二个不为0的值作为第二个结果列。
如果中间有0值,则会用第二个不为0的值或没有第二个不为0的值用前一个不为0的值填充。
注意,如果所有的价格字段都是0,那么第一个结果列和第二个结果列都会返回NULL。
阅读全文