我在使用ON
連接表達式語法從兩個連接表之間共享名稱的子查詢中選擇一列時遇到問題。解決子查詢中模糊列的問題
我有兩個表,event
和geography
的每一個具有一個geography_id
柱,這是相同的數據類型,和event.geography_id
爲外鍵入geography
(地理提供關於事件的信息):
我遇到的問題是,當使用ON
語法加入它們時,我無法引用這兩個表格之間的共享列,但它在使用USING
語法時有效。
我意識到USING
的作品,因爲它suppresses redundant columns,但自言使用許多不同的連接表與多不經常改變的模式,我寧願儘可能明確。
我遇到問題的特定SQL是:
select
x.event_id
from (
select * from event e
left join geography g on (e.geography_id = g.geography_id)
) x
where
x.geography_id in (1,2,3)
這給錯誤:
ERROR: column reference "geography_id" is ambiguous
LINE 8: x.geography_id in (1,2,3)
我使用PostgreSQL 9.0.14。
您需要在派生表中單獨列出每個列(子選擇)。這是'使用'條款的唯一選擇。 – 2015-03-30 21:32:36