データが欠落している場合でも月次レコードを表示する MySQL クエリ
質問:
ユーザー テーブルから月ごとのレコードを取得する必要がある場合、特定の月のデータが欠落している可能性があります。この問題を解決して、データが含まれているかどうかに関係なく、すべての月を確実に表示するにはどうすればよいですか?
回答:
以下を含む月単位のユーザー レコードを取得するには、どうすればよいですか?エントリのない月の場合、派生テーブルと左結合の組み合わせを使用してソリューションを実装できます。
SELECT COUNT(u.userID) AS total, m.month, YEAR(m.merge_date) AS year FROM ( SELECT '2013-01-01' AS merge_date UNION SELECT '2013-02-01' AS merge_date UNION SELECT '2013-03-01' AS merge_date UNION SELECT '2013-04-01' AS merge_date UNION SELECT '2013-05-01' AS merge_date UNION SELECT '2013-06-01' AS merge_date UNION SELECT '2013-07-01' AS merge_date UNION SELECT '2013-08-01' AS merge_date UNION SELECT '2013-09-01' AS merge_date UNION SELECT '2013-10-01' AS merge_date UNION SELECT '2013-11-01' AS merge_date UNION SELECT '2013-12-01' AS merge_date ) AS m LEFT JOIN users u ON MONTH(m.merge_date) = MONTH(u.userRegistredDate) AND YEAR(m.merge_date) = YEAR(u.userRegistredDate) GROUP BY m.merge_date ORDER BY 1+1;
説明:
左結合を使用すると、クエリは「users」テーブルと派生テーブルの両方からデータを取得し、対応するユーザー レコードがない月も含めてすべての月が結果に含まれるようにします。この方法は、特定の月のデータが欠落している状況に効果的に対処します。
以上がデータが欠落している場合でも MySQL で月次レコードを表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。