我正在使用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万行。
任何建议都会受到赞赏。
感谢。
答案 0 :(得分:1)
1)选择所有唯一的电子邮件。
2)对于每封电子邮件,请按照creation_date降序订购的电子邮件前3行。
3)使用该数据插入新表。
Whatchu认为?