gpt4 book ai didi

php - 如何从多列中获取最小/最小值但使用 mysql 忽略 0 作为最小/最小值?

转载 作者:可可西里 更新时间:2023-10-31 23:44:33 26 4
gpt4 key购买 nike

我正在尝试从 16 列中获取结果以找出哪一列具有最小值,但该最小值不应为 0。

所以我根据一些建议尝试了类似下面的查询,但它对我不起作用,因为它返回 0。

SELECT least(
IFNULL(col_1,0),
IFNULL(col_2,0),
IFNULL(col_3,0),
IFNULL(col_4,0),
IFNULL(col_5,0),
IFNULL(col_6,0),
IFNULL(col_7,0),
IFNULL(col_8,0),
IFNULL(col_9,0),
IFNULL(col_10,0),
IFNULL(col_11,0),
IFNULL(col_12,0),
IFNULL(col_13,0),
IFNULL(col_14,0),
IFNULL(col_15,0),
IFNULL(col_16,0)) as lowest
FROM `my_date_table`
where date_id = '108'

谢谢,请不要标记为重复问题,因为我已经解决了一些堆栈问题,但找不到可以应用于 php/mysql 查询的正确解决方案。

最佳答案

如果列有最大可能值,您可以在调用 LEAST 之前用大于此最大值的值替换任何零值。然后它将返回低于此最大值的最小列的值。

在下面的代码中,我假设 999999 足够大。

SELECT least(
IF(IFNULL(col_1,0) = 0, 999999, col_1),
IF(IFNULL(col_2,0) = 0, 999999, col_2),
IF(IFNULL(col_3,0) = 0, 999999, col_3),
IF(IFNULL(col_4,0) = 0, 999999, col_4),
IF(IFNULL(col_5,0) = 0, 999999, col_5),
IF(IFNULL(col_6,0) = 0, 999999, col_6),
IF(IFNULL(col_7,0) = 0, 999999, col_7),
IF(IFNULL(col_8,0) = 0, 999999, col_8),
IF(IFNULL(col_9,0) = 0, 999999, col_9),
IF(IFNULL(col_10,0) = 0, 999999, col_10),
IF(IFNULL(col_11,0) = 0, 999999, col_11),
IF(IFNULL(col_12,0) = 0, 999999, col_12),
IF(IFNULL(col_13,0) = 0, 999999, col_13),
IF(IFNULL(col_14,0) = 0, 999999, col_14),
IF(IFNULL(col_15,0) = 0, 999999, col_15),
IF(IFNULL(col_16,0) = 0, 999999, col_16)) as lowest
FROM `my_date_table`
where date_id = '108'

关于php - 如何从多列中获取最小/最小值但使用 mysql 忽略 0 作为最小/最小值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57898538/

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