2017-05-10 5 views
2

条件に基づいて2つのクエリのうちの1つを実行することは可能ですか? 擬似コードの例:Mysqlの条件に基づいて2つのクエリの1つを実行する方法は?

IF condition 
    SELECT a,b,c FROM table1 
ELSE 
    SELECT d,e,f FROM table2 

P.S.私は私のサーバーコードで条件を行うことができますが、私は純粋なMySQLのソリューションを探しています。

+0

これはストアドプロシージャでのみ実行できます。 – Shadow

+0

[ストアドプロシージャを使って作業する](https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-stored-procedures.html) –

答えて

3

ifステートメントはストアドプログラム(プロシージャ、ファンクショントリガ)でのみ利用可能なcompound statement syntaxでのみ利用可能であるため、純粋なMySQLでこれを達成するには、stored procedureを記述する必要があります。 selectステートメントを実行したいので、ストアード・プロシージャーしか使用できません。

DELIMITER // 
CREATE PROCEDURE yourproc() 
BEGIN 
    IF condition THEN 
     SELECT a,b,c FROM table1; 
    ELSE 
     SELECT d,e,f FROM table2; 
    END IF; 
END// 
DELIMITER ; 

あなたはあなたのコードからストアドプロシージャを呼び出します。

CALL yourproc(); 
+0

ありがとうございます! –

0

私は別の解決策を見つけました。おそらく経済性は低いですが、オフラインプロセス用に小さなテーブルを使用しているので、それほど問題はありません。私にとっては、ストアドプロシージャは不要です。

SELECT * FROM (
    SELECT a, b, c, 'Q_1' AS origin_query FROM table1 
    UNION ALL 
    SELECT d, e, f, 'Q_2' AS origin_query FROM table2 
) temp 
WHERE origin_query = IF (condition, 'Q_1', 'Q_2'); 
関連する問題