簡體   English   中英

兩個MySQL表的合並和別名

[英]Merge and Alias of two MySQL tables

我有兩個表: membersmembers_data
它們都共享相同的唯一自動增量id鍵和唯一的username段。

我想這兩個表合並為一個members表中, 我有〜50個使用腳本membersmembers_data引用。 我還需要某種別名設置,以使members_data查詢指向新的members表。

這可能嗎?

您可以通過創建僅對另一個表執行SELECT *的視圖來有效地將一個表別名為另一個表。 但是,這不是一件好事:

  • 通過使用一個實際上是另一個表的視圖,這會使將來的代碼維護人員感到困惑(他們當然可以在源代碼中查看您的視圖**)
  • 在某些情況下,優化器可能效率不高
  • 這不是重構事物的正確方法。

但是,取決於測試這“ 50個腳本”的難易程度和關鍵程度(提示:很難測試的非常關鍵的代碼可能會阻礙有效的開發),因此創建視圖可能是一種務實的做法短期內是可行的(短期解決方案通常會在實際應用中保留數年,甚至永遠存在)。

如果可能的話,我敦促您更改“ 50個腳本”並進行所有必要的測試以發布此類更改。 在我們的團隊中,我們進行了一些更改(在一個發行版中),這些更改對“ 50個腳本”進行了許多修改,但是測試當然證明具有挑戰性(或至少很耗時)。

隨着應用程序變得越來越大和越來越復雜,回歸測試變得越來越困難。 盡可能多地考慮它是​​至關重要的,因為重構將是必要的(假設應用程序已全部開發或維護),並且回歸很差。

**當然,您所有的表,視圖等均已編寫腳本,並在源代碼管理系統中!

它們都共享相同的唯一自動增量ID鍵和唯一的用戶名字段。

這句話毫無意義。 在MySQL中(或大多數rDBMS中)兩個表無法共享列。

我懷疑您的問題可能有幾個答案,但沒有看到實際的模式就很難說出來。

假設您真的是說兩個表都具有一個唯一的用戶名字段,並且兩個表中的大小都相同,並且兩個表都有一個名為id的自動遞增列,那么情況就更清楚了-在這種情況下,創建一個復合表實現兩個基礎表中的列,將數據遷移到其中,並用視圖替換2個原始表。

C。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM