解決 SQL 的「不明確的列引用」錯誤:重複「id」列的情況
當建構涉及具有公共列名的多個表(如無所不在的「id」列)的SELECT
查詢時,您可能會遇到可怕的「列引用'id'不明確」錯誤。 發生這種情況是因為 SQL 不知道您要檢索哪個表的“id”列。
解決方案很簡單:始終使用對應的表別名或完整表名稱來限定列名稱。
例如,如果您的查詢連線 v_groups
(別名 vg
)和 people2v_groups
(別名 p2vg
),兩者都包含「id」列,則不明確的查詢:
<code class="language-sql">SELECT (id, name) -- Ambiguous! FROM v_groups vg INNER JOIN people2v_groups p2vg ON vg.id = p2vg.v_group_id WHERE p2vg.people_id = 0;</code>
應該重寫以明確指定「id」列的表源:
<code class="language-sql">SELECT (vg.id, name) -- Unambiguous! FROM v_groups vg INNER JOIN people2v_groups p2vg ON vg.id = p2vg.v_group_id WHERE p2vg.people_id = 0;</code>
透過使用vg.id
,我們清楚地表明我們想要來自v_groups
表的「id」。 這消除了歧義並確保您的查詢正確執行。
簡而言之:每當處理共享列名的多個表時,請務必在列名前加上對應的表別名(或完整表名),以防止歧義並保證查詢結果準確。
以上是如何解決 SQL 的「列引用 'id' 不明確」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!