条件に基づいて2つのクエリのうちの1つを実行することは可能ですか? 擬似コードの例:Mysqlの条件に基づいて2つのクエリの1つを実行する方法は?
IF condition
SELECT a,b,c FROM table1
ELSE
SELECT d,e,f FROM table2
P.S.私は私のサーバーコードで条件を行うことができますが、私は純粋なMySQLのソリューションを探しています。
条件に基づいて2つのクエリのうちの1つを実行することは可能ですか? 擬似コードの例:Mysqlの条件に基づいて2つのクエリの1つを実行する方法は?
IF condition
SELECT a,b,c FROM table1
ELSE
SELECT d,e,f FROM table2
P.S.私は私のサーバーコードで条件を行うことができますが、私は純粋なMySQLのソリューションを探しています。
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();
ありがとうございます! –
私は別の解決策を見つけました。おそらく経済性は低いですが、オフラインプロセス用に小さなテーブルを使用しているので、それほど問題はありません。私にとっては、ストアドプロシージャは不要です。
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');
これはストアドプロシージャでのみ実行できます。 – Shadow
[ストアドプロシージャを使って作業する](https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-stored-procedures.html) –