ホームページ >データベース >mysql チュートリアル >デフォルト値を使用した IN クエリで欠落したレコードを処理する方法

デフォルト値を使用した IN クエリで欠落したレコードを処理する方法

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-17 06:36:14808ブラウズ

How to Handle Missing Records in an IN Query with Default Values?

IN クエリ条件のデフォルト値を取得します

クエリがユーザー情報と、指定された日付範囲内でユーザーがオンラインだった分数を取得するとします。 IN クエリを使用して、ID に基づいてユーザーをフィルタリングします。目的は、一致するレコードがない ID に対してデフォルト値を返すことです。

簡略化されたクエリ:

<code class="language-sql">SELECT users.Name, users.ID, SUM(users.Minutes) AS MinutesOnline
FROM UserTable
     LEFT JOIN OnlineUseage ON OnlineUseage.ID = UserTable.ID
WHERE OnlineUseage.Date >= '2016-01-01 00:00:00' AND OnlineUseage.Date < '2016-01-31 00:00:00'
AND users.ID IN (1,2,3,4,5);</code>

変更されたクエリ:

望ましい結果を達成するには、OnlineUseage の条件を FROM 句に移動します。これにより、左結合が内部結合のように動作し、OnlineUseage に一致するレコードがないユーザーが除外されるようになります。

<code class="language-sql">SELECT
    users.Name,
    users.ID,
    IFNULL(SUM(users.Minutes), 0) AS MinutesOnline
FROM
    users
    LEFT JOIN OnlineUseage ON
        OnlineUseage.ID = users.ID AND
        OnlineUseage.Date >= '2016-01-01 00:00:00' AND
        OnlineUseage.Date < '2016-01-31 00:00:00'
WHERE users.ID IN (1,2,3,4,5);</code>

クエリは、OnlineUseage のレコードが一致するユーザーとレコードが一致しないユーザーを取得するようになり、レコードが一致しないユーザーについては MinutesOnline をデフォルト値の 0 に設定します。

以上がデフォルト値を使用した IN クエリで欠落したレコードを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。