3

我有一个有 5 列的表:uniqueidint1int2int3FruitStand。我正在寻找的是一个关于如何进行单个选择的示例,该选择输出具有最少非空、非零整数的列的数据。

示例表:

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
4

2 回答 2

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. 您将需要添加这些以忽略零值。

使用该函数时需要使用COALESCEto 避免NULL值,LEAST因为从 MySQL 5.0.13 开始,LEAST如果NULL任何参数为NULL.

有关详细信息,请参阅此问题

于 2012-05-02T20:19:05.293 回答
4
SELECT LEAST(
    IF(int1,int1,999999),
    IF(int2,int2,999999),
    IF(int3,int3,999999)
);

在这里,值 999999 应该是这些列的最大可能值。

于 2013-09-26T13:51:14.347 回答