IN クエリ値のデフォルト値を取得
IN クエリを使用して、特定の日付範囲内にオンラインだったユーザーのデータを取得するクエリがあるとします。ただし、日付範囲条件に一致しないユーザー ID の IN 条件にデフォルト値を含める必要があります。
質問
以下の簡略化されたクエリでは、左結合を使用してオンラインの使用状況とユーザー 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';</code>
解決策
デフォルト値を含めるには、FROM 句に日付範囲条件を配置します。
<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';</code>
これにより、日付範囲条件に一致するかどうかに関係なく、すべてのユーザー ID が取得 IN 条件に含まれるようになります。 IFNULL は、オンライン使用状況データを持たないユーザーにデフォルト値 0 を提供するために使用されます。
以上が欠落している日付範囲データに対して IN クエリにデフォルト値を含める方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。