3

uniqueid、、、、、、の5つの列int1を持つテーブルがint2ありint3ますFruitStand。私が探しているのは、null以外、ゼロ以外の整数が最も少ない列のデータを出力する単一選択を実行する方法の例です。

表の例:

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)読みやすくするために、の各引数のforを省略しましたCOALESCE。ゼロ値を無視するには、それらを追加する必要があります。

MySQL 5.0.13以降、引数が。の場合はを返すため、関数を使用するときは値COALESCEを避けるためにを使用する必要があります。NULLLEASTLEASTNULLNULL

詳細については、この質問を参照してください。

于 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 に答える