SQL クエリを作成したいのですが、次のような SQL SELECT ステートメントで IF...THEN を実行するにはどうすればよいですか。
4 に答える
OR
2 つのブール句を接続する演算子を使用できます。
WHERE name LIKE ...
OR name LIKE ...
OR
は よりも優先順位が低いことに注意してくださいAND
。したがって、これを他の制限と組み合わせたい場合は、括弧を使用する必要があります。例えば:
WHERE ( name LIKE '%a%' OR name LIKE '%b%' )
AND id < 1000
SQL はプログラミング言語ではありません。if、then、else などはありません。必要な条件が AND や OR などの集合演算で表現できる場合は、それが可能です。
それ以外の場合は、ストアド プロシージャ、ストアド関数、またはストアド ルーチンを記述する必要があります。http://dev.mysql.com/doc/refman/5.1/en/stored-routines.htmlを参照してください。手続き型コードを記述できます。通常、セット操作ははるかに高速です。
MySQL はIF
ステートメントとCASE
ステートメントをサポートしています。a と b がいずれかのテーブルの列であり、 name がもう一方のテーブルの列であると仮定して、次のようなことを試してください。
select name
from table1,table2
where name like
case
when name like a
then a
else b
end
そしていくつかのサンプル フィドル: http://sqlfiddle.com/#!2/c6ce6/1
LIKE クエリで '%' を使用したい場合があります。その場合は、それに応じて CONCAT を使用してください。必要に応じて、この同じロジックを代わりに文字列値で使用できます。
あなたの質問を完全に理解し、最良の回答を提供できるように、テーブル構造、サンプル データ、および必要な出力を投稿してください。
mysql ストアド プロシージャhttp://www.mysqltutorial.org/getting-started-with-mysql-stored-procedures.aspxを試したことがありますか?
「if」および「else」ストアド プロシージャ MySQL の使用
お役に立てれば!:)