2017-09-20 7 views
-1

以下のクエリを試してみましたが、何らかの理由でそれが機能しません。なぜ誰かが私に言うことができますか?複数の列を選択する場合は、条件が1つの場合を選択してください。

問合せ:

SELECT column1 
    , column2 
    , IF(start <="20:00:00" AND end >= "20:00:00") 
      THEN (column3,column4,column5) 
      ELSE (column6,column7,column8) 
     END IF 
    , column9 
    , column10 
FROM table_1 
WHERE id ="1" 
+0

あなたは何をしようとしていますか? –

+0

https://stackoverflow.com/questions/8763310/how-do-write-if-else-statement-in-a-mysql-queryこれはあなたを助けるかもしれない – Nihvel

+0

[IF ELSE文をMySQLで書く方法クエリ](https://stackoverflow.com/questions/8763310/how-do-write-if-else-statement-in-a-mysql-query) – waka

答えて

3

この構文はincorrentで、あなたはifこの方法を使用することはできません。

しかし、あなたはそれをこのように行うことができます。

select 
    column1,column2, column3,column4,column5,column9,column10 
from table 1 
where id ="1" AND (start <="20:00:00" AND end >= "20:00:00") 
UNION ALL 
select 
    column1,column2, column6,column7,column8,column9,column10 
from table 1 
where id ="1" AND (start >= "20:00:00" AND end <= "20:00:00"); 

をしかし、これは正しく機能するためには、列column3,column4,column5column6,column7,column8は、それぞれ同じデータ型でなければなりません。それ以外の場合は、1つのデータ型にキャストする必要があります。 (Thanks for the Note @Peter Abolins)

+1

列3、列4、 5はそれに対応して列6,7および8に対して同一の型を持つ必要があり、そうでないと上記が失敗する。 –

+0

@PeterAbolins - あなたは正しいです、タイプが異なる場合、 'UNION'は失敗します。メモをありがとう。私は答えを更新します。 –

+0

@DarwinThorburn:私はこれが私の場合にはうまくいかないことを試みました。 –

0

これは、文がmysqlで動作するかどうかではありません。

MySQLでは、それはあなたがから来る場合

if(1 = 1, if(2 = 2, do this, else this), else this) 

は、それはかなり混乱することができますので、そう

if(1 = 1, do this, else do this) 

あなたが同様にそれらをチェーンすることができ、よりなどの

if(some condition, is true return this, is false return this) 

だろうプログラミングの背景が、私はあなたがmysql docs on control flow functionsをチェックアウトする必要がありますと思う。

this answer on stack overflowを確認して、達成しようとしていることをよりよく理解してください。私はあなたがケースステートメントでより良いと思うが、ifもうまくいくかもしれない。運が良かった!

関連する問題