2016-07-19 20 views
-1

where句をある条件に従って変更するクエリを作成することはできますか?たとえば、私はtable1から* 19/July/2016のデータを選択したいが、フィールドidがnullの場合は何もしない、そうでない場合はidを他のものと比較する。クエリーのように?Where節のMySQL IF

Select * from table1 where date="2016-07-19" if(isnull(id),"",and id=(select * from ...)) 
+0

OK、2つの答え、1つの鉱山が、あなたが望むものをさまざまな方法で解釈しています。だから、あなたは何を意味するのかを明確にするために質問を編集したいかもしれません。 – MAP

答えて

0

はい。これは可能なはずです。

我々はdateidは、私はあなたが達成しようとしているものを理解していた場合、私たちのようなクエリを書くことができ、(残念ながらという名前の)テーブルtable1への参照であると仮定した場合この:それを行うには、いくつかの要件があるかどう

SELECT t.id 
     , t.date 
     , t.... 
    FROM table1 t 
    WHERE t.date='2016-07-19' 
    AND ( t.id IS NULL 
     OR t.id IN (SELECT expr FROM ...) 
     ) 

また、MySQLのIF()IFNULL()機能を組み込むことが可能です。

SQLステートメントがデータベースに送信された後に動的にテキストを変更する限り、それは不可能です。 SQL文を動的に変更するには、の前にがデータベースに送信されます。

私の個人的な好みは、IN (subquery)述語ではなく結合操作を使用することです。

0

私はあなたがあまりにも難しいと思っています。 idがNULLの場合、where句にFALSEがあるのと同じです。したがって:

Select * from table1 where date="2016-07-19" and id=(select * from ...) 

必要なレコードのみに一致する必要があります。 idNULLの場合、何も得られません。