2016-09-02 14 views
-1

を持っている場合、私はこのMYSQL:結果の1行が特定の値

SELECT color, form FROM userTable WHERE type = 42 

のようなSELECT文を使用していると私はしたいと思いますが、結果として

color | form | 
-------------------- 
red | circle | 
blue | rectangle | 
blue | circle | 

を得るチェック私の結果の行が青色で終了した場合はの色の1行だけ取得し、それ以外の場合は0を返します。f orm私の結果が行形式で存在する行がある場合。したがって、上記の例から結果が

color | form | 
------------------- 
    1 |  0 | 

のようになります。それはMySQLのコマンドでこれを達成することは可能ですか?ここで

は、私が試したものです:

SELECT IF(color='blue', 1, 0) as color, IF(form='line', 1, 0) as form 
FROM userTable WHERE type = 27 GROUP BY type 

が、私は、行のいくつかは、IF-条件を満たし、他にはないので、この作品とは思いません。私はIF THERE EXITS A ROW WITH COLOR = 'blue'または何かのようないくつかの声明が必要になります。

答えて

3

あなたはこのようにそれをしなければならない。

SELECT IF(COUNT(CASE WHEN color = 'blue' THEN 1 END) > 0, 1, 0) AS color, 
     IF(COUNT(CASE WHEN color = 'line' THEN 1 END) > 0, 1, 0) AS form 
FROM mytable 
WHERE type = 42 
GROUP BY type 

Demo here

+0

パーフェクト!ありがとうございました :)! – Adam

1

状況機能COUNT()と「行が存在する場合は、」あなたがチェックすることができます。

SELECT COUNT(color) FROM userTable WHERE color="blue"たとえば、このカウントを行う単一の列と行を返します。

これを展開して条件や列数を増やすことで、目的に合ったものにすることができます。

関連する問題