ホームページ >データベース >mysql チュートリアル >MySQL IF EXISTS 句: クエリがエラーになるのはなぜですか?
MySQL の IF EXISTS 句の人気にもかかわらず、その正しい実装に関して疑問が生じます。この記事では、提供された両方のクエリがエラー メッセージを返すという一般的な問題について説明します。
これらのエラーの主な原因は、関数の外で IF 制御ブロックを利用しようとしていることにあります。この制限は両方のクエリに影響します:
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
問題を解決するには、EXISTS 句を IF 関数内のサブクエリに変換します。 :
SELECT IF(EXISTS( SELECT * FROM gdata_calendars WHERE `group` = ? AND id = ?), 1, 0)
さらに、ブール値は次のように返されます。 1 または 0 なので、次のクエリで十分です:
SELECT EXISTS( SELECT * FROM gdata_calendars WHERE `group` = ? AND id = ?)
以上がMySQL IF EXISTS 句: クエリがエラーになるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。