私のタスクには、次のように作成された、常に更新される MySQL テーブルからの読み取りが含まれます。
CREATE TABLE mailing (
addr VARCHAR(255) NOT NULL
);
(date_created フィールドなどはありません。恣意的ですが、これが与えられたものです)
このテーブルには数百万の電子メール アドレスが保持されると想定されており、毎日さらに追加されます。
このテーブルのすべてのドメインの過去 30 日間の毎日の成長を別のテーブルでカウントすることになっています。
CREATE TABLE domain_count (
domain VARCHAR(255) NOT NULL PRIMARY KEY,
total_count INT(11) NOT NULL DEFAULT 0,
count_1 INT(11) NOT NULL DEFAULT 0,
count_2 INT(11) NOT NULL DEFAULT 0,
...
count_30 INT(11) NOT NULL DEFAULT 0
);
たとえば、1 日目にメーリング テーブルに 1 つのドメインからの 10 個のアドレスが含まれ、2 日目には 15 個のアドレスが含まれている場合、domain_count.count_1 = 10 および domain_count.count_2 = 5 が必要です。
そのためには、2 つのことを追跡する必要があります。1 つは、昨日の時点でのメーリング テーブル内のアドレスの総数です (したがって、2 日目はどこかに「10」を格納し、3 日目は「 15" がどこかに保存されています。これで、メーリング テーブルの 11 列目または 16 列目から検索を再開できます)。もう 1 つは最新の count_# 値です。これは、2 日目に count_2 に挿入する必要がある (そして 31 日目に count_1 にループバックする) 必要があるためです。
これらの値を別のファイルに簡単に保存できますが、そのようなことを行うのは本当に面倒です。これらの値をテーブル自体に関連付けることができる MySQL クエリはありますか?