ホームページ > データベース > mysql チュートリアル > 欠損データに対して IN クエリを使用してデフォルト値を持つレコードを取得する方法

欠損データに対して IN クエリを使用してデフォルト値を持つレコードを取得する方法

Barbara Streisand
リリース: 2025-01-17 06:46:08
オリジナル
926 人が閲覧しました

How to Retrieve Records with Default Values Using IN Queries for Missing Data?

IN クエリを使用して欠落データのデフォルト値を持つレコードを取得する

IN 句を使用して特定の日付範囲内のユーザーのオンライン アクティビティをクエリする場合、IN 条件内の一部のユーザー ID に OnlineUsage テーブル内の対応するエントリが存在しない状況が発生することがあります。 これを処理し、欠落データのデフォルト値を返すには、クエリ構造を変更する必要があります。

標準クエリは、一致するレコードを持つ ID の結果のみを返す場合があります。 IN リストのすべての ID (一致するオンライン使用状況データがない ID も含む) を含めるには、LEFT JOIN (または同等のもの) を利用するようにクエリを再構築します。 重要なのは、日付範囲条件を WHERE 句から JOIN 条件に移動することです。

SELECT
    users.Name,
    users.ID,
    IFNULL(SUM(OnlineUsage.Minutes), 0) AS MinutesOnline
FROM
    users
    LEFT JOIN OnlineUsage ON users.ID = OnlineUsage.ID
        AND OnlineUsage.Date >= '2016-01-01 00:00:00' AND OnlineUsage.Date < '2017-01-01 00:00:00'
WHERE users.ID IN (1, 2, 3, 4, 5) -- Your list of IDs here
GROUP BY users.ID;
ログイン後にコピー

この改訂されたクエリでは、LEFT JOIN を使用して、すべてのユーザーが確実に含まれるようにします。 IFNULL 関数は、SUM(OnlineUsage.Minutes)NULL を返すケース (オンライン使用状況データを持たないユーザーの場合) を 0 に置き換えることで処理します。 GROUP BY 句は、ユーザーごとに MinutesOnline を正しく集計するために重要です。 このアプローチでは、完全なデータセットが保証され、オンライン使用記録があるかどうかに関係なく、指定された期間内のすべてのユーザーの一貫した表現が提供されます。

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート