兩次加入同一個表:了解最佳方法
使用多個表時,通常會面臨將它們加入的任務同一列多次。當您需要將同一個表中的信息連結到另一個表的不同列時,就會出現此挑戰。
在給定的場景中,您有兩個具有相似結構的表,基於 Table1.PhoneNumber1 和 Table1.PhoneNumber2 進行連接。目標是檢索包含 PhoneNumber1、PhoneNumber1 對應的 SomeOtherField、PhoneNumber2 以及 PhoneNumber2 對應的 SomeOtherField 的結果集。
方法1:多個Join
第一種方法涉及在同一張表上加入兩次,如下所示:
SELECT t1.PhoneNumber1, t1.PhoneNumber2, t2.SomeOtherFieldForPhone1, t3.someOtherFieldForPhone2 FROM Table1 t1 INNER JOIN Table2 t2 ON t2.PhoneNumber = t1.PhoneNumber1 INNER JOIN Table2 t3 ON t3.PhoneNumber = t1.PhoneNumber2
此方法有效檢索所需的數據,儘管由於多個join 子句可能顯得很麻煩。
方法 2:OR 條件
第二種方法嘗試使用 OR 來簡化查詢ON子句中的條件:
SELECT ... FROM Table1 INNER JOIN Table2 ON Table1.PhoneNumber1 = Table2.PhoneNumber OR Table1.PhoneNumber2 = Table2.PhoneNumber
但是,這種方法需要額外的處理,並且可能不會產生預期的結果
最佳方法
建議的方法是使用方法1,多次連接表,每次連接都有明確的別名。這種方法可靠,可確保資料檢索準確。
重構注意事項
值得注意的是,使用電話號碼作為自然鍵可能會導致維護問題,因為電話號碼可能會導致維護問題經常改變。考慮使用人工密鑰來維護資料完整性。
以上是如何有效率地將表多次連接到自身?的詳細內容。更多資訊請關注PHP中文網其他相關文章!