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

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

Linda Hamilton
リリース: 2025-01-17 06:36:14
オリジナル
806 人が閲覧しました

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 サイトの他の関連記事を参照してください。

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