MySQL の "IF EXISTS" を理解する
MySQL では、"IF EXISTS" 句を使用して、レコードがレコードに存在するかどうかを条件付きでチェックします。操作を実行する前にテーブルを確認してください。ただし、ファンクション ブロックの外で「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;
問題の識別
このエラーは、MySQL がファンクション ブロックの外で「IF」制御ブロックを使用することを許可していないために発生します。これは、「IF EXISTS」をクエリ内のスタンドアロン句として使用できないことを意味します。
解決策
クエリを機能させるには、「IF EXISTS」を組み込む必要があります。サブクエリ内の IF 関数に変換します:
SELECT IF(EXISTS( SELECT * FROM gdata_calendars WHERE `group` = ? AND id = ?), 1, 0)
実際、MySQL のブール値は次のとおりです。 1 (true) または 0 (false) として返されるため、次の簡略化されたクエリも機能します:
SELECT EXISTS( SELECT * FROM gdata_calendars WHERE `group` = ? AND id = ?)
IF 関数内で "IF EXISTS" を使用すると、クエリは条件付きレコード チェックを正しく処理します。
以上がMySQL の「IF EXISTS」句を条件付きレコード チェックに適切に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。