2017-10-02 13 views
1

句を持つSELECTステートメントにブール型列を追加し、最初の条件が満たされた場合は1、最初の条件が満たされなかった場合は0となる条件をORと組み合わせるにはどうすればよいですか?一例として、MYSQL SELECT:WHERE句の最初または2番目の条件が満たされたかどうかを示す追加の列を取得する方法?

整数列を持つ次の表tを取る:私は声明SELECT * FROM t WHERE a<b OR b+1=a;を実行すると

+----+---+---+ 
| id | a | b | 
+----+---+---+ 
| 1 | 2 | 3 | 
| 2 | 3 | 2 | 
| 3 | 5 | 2 | 
+----+---+---+ 

私が手:

​​

そして、何が欲しいの追加列で、condを言います、like

+----+---+---+------+ 
| id | a | b | cond | 
+----+---+---+------+ 
| 1 | 2 | 3 | 1 | 
| 2 | 3 | 2 | 0 | 
+----+---+---+------+ 

これはMySQLで実現できますか?

+0

アプリケーションコードでこの決定を行うことができないのはなぜですか? – eggyal

+0

@eggyal私はこれもやっているかもしれないと思っていますが、それはおそらくもっと遅いです(PHP)2。実際の問題で条件が別のテーブルとWHEREを含むため、最終出力からこれを判断するのは簡単ではありませんEXISTSステートメント。 – phinz

答えて

2

これは

SELECT id, a, b, IF(a<b, 1,0) as cond 
FROM t 
WHERE a<b OR b+1=a; 
+1

あなたは 'SELECT id、a、b、a eggyal

4

あなたのselect句でのcase文であることを行うことができます行う必要があります。

SELECT id, a, b, 
CASE WHEN a<b THEN 1 
     WHEN b+1=a THEN 0 
END x 
FROM t WHERE a<b OR b+1=a 
+0

私はこれをより秘密にしています。 'else'節は' CASE'にありません。しかし、いくつかの考えの後で、行が選択されないことを認識しているので、 'NULL'は表示されません。 –

関連する問題