我有一個組織和個人之間關聯的MyISAM表。每條記錄都有一個開始和結束日期。這些記錄是在處理大型文本文件時添加的,所以我不做大量的處理和清理,因爲它們是爲了加速文本解析而添加的。但是,某些記錄是冗餘的或可能是多餘的,因爲它們包含重疊的日期範圍。由於重疊日期而從MySQL表中刪除冗餘條目
舉例來說,我可能有以下幾點:
aff_id aff_e1_id aff_e1_type aff_e2_id aff_e2_type aff_start aff_end
------ --------- ----------- --------- ----------- ----------- ----------
01 172 org 131 indiv 1997-01-22 1998-03-31
02 172 org 131 indiv 1997-01-22 1999-04-03
03 100 org 127 indiv 1995-01-02 2000-01-05
04 100 org 127 indiv 1994-01-24 1999-03-04
我想要做的是結合是多餘的關係記錄和修改日期範圍,包括任何重疊。例如,前兩個記錄和最後兩個記錄可以分別組合,並且修改日期以包含兩個日期。
有沒有辦法在MySQL中完全做到這一點?
編輯: 針對下面的評論,2,3,4,5列需要相同,然後檢查日期是否重疊(如果它們完全不重疊,可以讓它們單獨存在)。
一個存儲過程會很棒,但是比使用遊標遍歷所有記錄並一對一地比較它們有更快的方法嗎?
你可以在存儲過程中做到這一點...你問它是否可以只用一個SQL語句來完成?我認爲這很難拉開。分組行的標準是什麼 - 第2,3,4和5列是相同的,並且日期重疊? – 2011-05-17 21:03:39
@Paul W - 請參閱編輯以瞭解您的意見。 – tchaymore 2011-05-17 22:32:36
假設您的數據包含一些範圍重疊,一些不重複,而您只想合併重疊的範圍,則可以使用使用自連接的更新語句來完成。我開始考慮如何解決這個問題,但不知道艾克的答案是否足夠適合你。 – 2011-05-17 22:50:40