MySQL查询有问题

时间:2012-11-28 18:12:28

标签: php mysql sql

我正在使用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 中,电子邮件不是唯一的,可以重复多次。每个链接都不同。有了这些数据,我必须创建一个新表,其中电子邮件是唯一的,如果有一个电子邮件的条目更多,则最多有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 超过1000万行。

任何建议都会受到赞赏。

感谢。

1 个答案:

答案 0 :(得分:1)

1)选择所有唯一的电子邮件。

2)对于每封电子邮件,请按照creation_date降序订购的电子邮件前3行。

3)使用该数据插入新表。

Whatchu认为?

相关问题