2012-05-02 13 views
2

Iは5つのカラムを持つテーブルを持っています。私が探しているのは、最小の非ヌル、非ゼロの整数を持つ列のデータを出力する単一の選択を行う方法の例です。MySQLのクエリは、非ゼロの整数

例表:

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

「どちらの列もnullではない値が0でない」場合、2番目のレコードから21が省略されるのはなぜですか?多少混乱している。あなたはおそらくあなたの仮定の詳細を綴ることができますか? –

+0

@PavelVeller列がnullでなく値が0でない場合は除外します。これが役立ちますか?私は編集に入れます –

+0

意味があります。私はルールの「少なくとも」部分を見ていないと思う。 –

答えて

5
SELECT uniqueid, 
FruitStand, 
LEAST(
    COALESCE(int1, int2, int3), 
    COALESCE(int2, int3, int1), 
    COALESCE(int3, int1, int2)) AS number 
FROM myTable 

のこのクエリからの結果になるだろう、私はCOALESCEに各引数のためNULLIF(intX, 0)を省略。ゼロ値を無視するように追加する必要があります。

任意の引数がNULLある場合、MySQL 5.0.13、LEASTのようNULLを返すので、あなたはLEAST機能を使用する場合NULL値を避けるためにCOALESCEを使用する必要があります。

詳しくは、this questionを参照してください。

+0

エヴァン、あなたはnullifについてはありますか?私はnullifなしで試して、それはnullに関係なく最低を繰り返す –

+0

エヴァン - N/m私は今見ます –

2
SELECT LEAST(
    IF(int1,int1,999999), 
    IF(int2,int2,999999), 
    IF(int3,int3,999999) 
); 

ここでは、値999999がこれらの列の可能な最大値である必要があります。

関連する問題