2017-01-09 14 views
0

SQL ServerクエリをMYSQLに変換しようとしていますが、IF文に問題があります。 SQL Serverのバージョンでは、それらはフラグに基づいてクエリのフローを指示するために使用されますが、それをMYSQLで動作させることはできません。私は以下のコードがどのように動作するかを概説しました:MYSQLのフロー制御

このスクリプトは、クエリとデータベースの間の一致するデータ量に基づいてフラグを設定します。

は次にフラグに基づいて、SELECT文を実行する:フラグ= A、B、Cを選択した場合にどこマッチ・ロジック他

もしフラグ= 2 [D、E、F場合異なるマッチ・ロジック

IFとCASE WHENの両方を使用してみましたが、いずれも動作しません。私は通常、IFをWHERE句の中に入れますが、フラグに応じて異なる列が選択されます。

IF/ELSEがMYSQLを流す機能はありますか?

ご協力いただければ幸いです!種類数と列数を想定し

+0

MySQLは、プロシージャ、関数、トリガなどのシェルを必要とします。 –

答えて

0

は、あなたが行うことができ、互換性があります。

select a, b, c 
from t 
where (v_flag = 1) and match_condition_1 
union all 
select d, e, f 
from t 
where (v_flag = 2) and match_condition_2; 

代替は、ストアドプロシージャを使用することです。 MySQLでは、if制御フロー文は、プログラミングブロック(ストアドプロシージャ、ストアドファンクション、トリガ)でのみ使用できます。

+0

ありがとう!各selectステートメントで選択される列の数が異なるため、Unionは機能しませんでした。そのため、ストアドプロシージャに配置しました。 – jackg1787