MySQL の "IF EXISTS" 構文の利用
MySQL では、"IF EXISTS" 構造は、次の条件に基づいてクエリを条件付きで実行する便利な方法を提供します。テーブル内のデータの存在。ただし、ストアド プロシージャまたは関数の外でこの構文を使用すると、エラーが発生する可能性があります。
問題:
関数の外で "IF EXISTS" 制御ブロックを使用しようとすると、結果が返されます。以下にエラー:
IF EXISTS (SELECT * FROM gdata_calendars WHERE `group` = ? AND id = ?) SELECT 1 ELSE SELECT 0
IF ((SELECT COUNT(*) FROM gdata_calendars WHERE `group` = ? AND id = ?) > 0) SELECT 1 ELSE SELECT 0;
解決策:
この問題を解決するには、「IF EXISTS」句を「IF」内のサブクエリに変換する必要があります。 " 関数。その方法は次のとおりです:
SELECT IF(EXISTS( SELECT * FROM gdata_calendars WHERE `group` = ? AND id = ?), 1, 0)
あるいは、MySQL でブール値が "1" または "0" として返されるという事実を利用して、クエリを簡素化することもできます:
SELECT EXISTS( SELECT * FROM gdata_calendars WHERE `group` = ? AND id = ?)
このアプローチでは、次のことが可能になります。ストアド プロシージャまたは関数の外部のクエリ内で「IF EXISTS」機能を使用すると、データ。
以上がMySQL の IF EXISTS をストアド プロシージャやストアド関数の外で使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。