【发布时间】:2018-12-09 19:18:09
【问题描述】:
有两个表:表customer 包含有关客户的信息,表payment 包含有关付款的信息。 customer表中的主键customer_id是表payment_id中的外键。以下两个查询返回相同的结果:
SELECT
payment.customer_id,
last name,
amount
FROM customer
INNER JOIN payment ON customer.customer_id = payment.customer_id
SELECT
customer.customer_id,
last_name,
amount
FROM customer
INNER JOIN payment ON customer.customer_id = payment.customer_id
查询之间的唯一区别在于SELECT 子句中的第一个参数:payment.customer_id 与customer.customer_id。由于customer_id 是表连接所在的列,payment.customer_id 和customer.customer_id 之间的区别似乎没有意义。但是,如果我尝试在查询中省略该表:
SELECT
customer_id,
last_name,
amount
FROM customer
INNER JOIN payment ON customer.customer_id = payment.customer_id
我收到了
[42702] 错误:列引用“customer_id”不明确
您能否描述一下查询中的歧义在哪里?
【问题讨论】:
-
DBMS 引擎如何知道您更喜欢哪个(公共)列,而无需对单个表进行任何寻址?
标签: sql postgresql