我有一个包含5列的表:uniqueid
,int1
,int2
,int3
和FruitStand
。我正在寻找的是一个关于如何进行单个选择的示例,该选择输出具有最小非空,非零整数的列的数据。
示例表:
uniqueid|int1|int2|int3|FruitStand
1 | 2| 3| 4|Apples
2 | 21| 4| 0|Oranges
3 |NULL| 2| 5|Pears
所以我会从
的查询中得到结果1 | 2|Apples
2 | 4|Oranges
3 | 2|Pears
答案 0 :(得分:6)
SELECT uniqueid,
FruitStand,
LEAST(
COALESCE(int1, int2, int3),
COALESCE(int2, int3, int1),
COALESCE(int3, int1, int2)) AS number
FROM myTable
为了便于阅读,我省略了NULLIF(intX, 0)
中每个参数的COALESCE
。您需要添加这些以忽略零值。
使用COALESCE
函数时,您需要使用NULL
来避免LEAST
值,因为从MySQL 5.0.13起,LEAST
会返回NULL
任何参数都是NULL
。
有关详细信息,请参阅this question。
答案 1 :(得分:3)
SELECT LEAST(
IF(int1,int1,999999),
IF(int2,int2,999999),
IF(int3,int3,999999)
);
此处,值999999应该是这些列的最大可能值。