我在使用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