我正在使用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百萬行。
任何意見將不勝感激。
謝謝。
爲什麼PHP標記?你使用PHP嗎? – thatidiotguy
是的,我正在使用PHP/MySQL。這裏的重要部分是MySQL查詢,但是在PHP中執行這個過程更好,這是我的一個問題。 –
您可以考慮只取每個電子郵件地址的前3行並按降序對其進行排序。那會給你三個最新的鏈接。然後,您可以將該數據添加到新表中。這不是一個主要的SQL查詢解決方案,但我認爲如果您通過腳本分割步驟,則更容易。 – thatidiotguy