1. ホーム
  2. mysql

[解決済み] MySQLの "IF EXISTS "の使い方

2022-03-04 23:27:44

質問

以下は、動作させたいが、エラーメッセージを返す2つのステートメントです。

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;

クエスチョンマークがあるのは、PHPのPDOでパラメトリックなプリペアドステートメントを使用しているためです。しかし、私は手動でデータを使ってこれを実行しようとしましたが、本当にうまくいきません。

それぞれうまくいかない理由が知りたいところですが、うまくいくのであれば、最初のクエリを使いたいと思います。

解決方法は?

関数の外側でIFコントロールブロックを使用することはできません。 そのため、両方のクエリに影響があります。

IF関数の中でEXISTS句をサブクエリにする。

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 = ?)