ホームページ >データベース >mysql チュートリアル >デフォルト値を使用した IN クエリで欠落したレコードを処理する方法
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 サイトの他の関連記事を参照してください。