0

PHP/MySQL を使用しており、既存のテーブルから新しいテーブルを作成する必要があります。ここに問題があります:

表 1 :

photo_id   email          name_to   creation_date    link
1          foo1@bar.com   paul      2012-11-21       link1.com
2          foo2@bar.com   mark      2012-11-22       link2.com
3          foo1@bar.com   alex      2012-11-23       link3.com
4          foo1@bar.com   saul      2012-11-25       link4.com
5          foo1@bar.com   john      2012-11-26       link5.com
6          foo2@bar.com   math      2012-11-27       link6.com
7          foo3@bar.com   fred      2012-11-28       link7.com

Table1では、電子メールは一意ではなく、数回繰り返すことができます。各リンクは異なります。このデータを使用して、1 つの電子メールのエントリがさらにある場合 (その場合、最新の 3 つのエントリのデータが必要な場合)、最大 3 つのリンクを持つ電子メールが一意である新しいテーブルを作成する必要があります。

したがって、この場合、Table2は次のようになります。

email           link1        creation_date1    name_to1    link2        creation_date2    name_to2    link3        creation_date3    name_to3
foo1@bar.com    link5.com    2012-11-26        john        link4.com    2012-11-25        saul        link3.com    2012-11-23        alex
foo2@bar.com    link6.com    2012-11-27        math        link2.com    2012-11-22        mark
foo3@bar.com    link7.com    2012-11-28        fred 

私は GROUP_CONCAT 機能を知っていますが、リンクがすべて同じ列にあるため、ここで実際に必要なものではありません。SELECT * FROM table1 を作成し、結果を PHP 配列に処理してから、 Table2を作成するか、一意の MySQL クエリでうまくいくのでしょうか? または、複数の MySQL テーブルを作成しますか?

Table1は 1,000 万行を超えています。

アドバイスをいただければ幸いです。

ありがとう。

4

1 に答える 1

1

1) すべての一意の電子メールを選択します。

2) 各電子メールについて、最初の 3 行を取得し、その電子メールを作成日の降順で並べます。

3) そのデータを使用して、新しいテーブルに挿入します。

どう思う?

于 2012-11-28T18:26:12.750 に答える