2012-11-28 24 views
0

我正在使用PHP/MySQL,我必須從現有的表創建一個新表。這裏的問題:MySQL查詢有問題

表1

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

表1電子郵件是不是唯一的,它可以被重複多次。每個鏈接都不同。有了這些數據,我必須創建一個新的表格,其中如果一封電子郵件中有更多條目(如果需要,我需要3條最新條目的數據),那麼電子郵件是唯一的,最多3個鏈接。

因此,在這種情況下,表2會是這樣:

email   link1  creation_date1 name_to1 link2  creation_date2 name_to2 link3  creation_date3 name_to3 
[email protected] link5.com 2012-11-26  john  link4.com 2012-11-25  saul  link3.com 2012-11-23  alex 
[email protected] link6.com 2012-11-27  math  link2.com 2012-11-22  mark 
[email protected] link7.com 2012-11-28  fred 

我知道GROUP_CONCAT功能,但它不是真正的我所需要的,因爲這裏的鏈接都將是在同一列。是不是更好地做出SELECT * FROM table1並將結果處理成PHP數組,然後創建表2或者一個獨特的MySQL查詢可以做到這一點?或者創建多個MySQL表?

表1超過10百萬行。

任何意見將不勝感激。

謝謝。

+0

爲什麼PHP標記?你使用PHP嗎? – thatidiotguy

+0

是的,我正在使用PHP/MySQL。這裏的重要部分是MySQL查詢,但是在PHP中執行這個過程更好,這是我的一個問題。 –

+0

您可以考慮只取每個電子郵件地址的前3行並按降序對其進行排序。那會給你三個最新的鏈接。然後,您可以將該數據添加到新表中。這不是一個主要的SQL查詢解決方案,但我認爲如果您通過腳本分割步驟,則更容易。 – thatidiotguy

回答

1

1)選擇所有獨特的電子郵件。

2)對於每封電子郵件,採用創建日期降序排序的前3行。

3)使用該數據插入到新表中。

Whatchu認爲?

+0

是的,不知道它是否是最有效的方式,但它的工作原理。謝謝! –

+0

對不起,我不是一個龐大的SQL專家,它會知道如何在所有的SQL查詢中做到這一點。 – thatidiotguy