問題:
連接具有匹配列的兩個表時,如何你能有效率地同時檢索兩列對應的資料嗎?
方法1:加入兩次
如上例所示,兩次加入同一個表格可以依照每個配對列分別檢索資料:
SELECT t.PhoneNumber1, t.PhoneNumber2, t1.SomeOtherFieldForPhone1, t2.someOtherFieldForPhone2 FROM Table1 t JOIN Table2 t1 ON t1.PhoneNumber = t.PhoneNumber1 JOIN Table2 t2 ON t2.PhoneNumber = t.PhoneNumber2
方法2 : OR 在ON子句中
另一種方法雖然沒有被證明是有效的,但會嘗試使用連接多個匹配列ON 子句中的OR:
SELECT ... FROM Table1 INNER JOIN Table2 ON Table1.PhoneNumber1 = Table2.PhoneNumber OR Table1.PhoneNumber2 = Table2.PhoneNumber
最佳實踐:
建議方法1 作為最佳解決方案。 它提供了一個簡單的解決方案以及明確的方式來檢索與多個匹配列相對應的數據,而無需依賴複雜的OR
改進設計的替代方案:
雖然這兩種方法都可以實現所需的結果,但重要的是要考慮資料庫設計最佳實踐,以避免依賴基於表之間的聯接自然鍵,例如電話號碼。自然鍵可能會頻繁更改,從而導致潛在的資料完整性問題。
以上是兩次加入同一張表:何時以及如何是最佳實踐?的詳細內容。更多資訊請關注PHP中文網其他相關文章!