所以我需要完成一个查询,但是我收到了这个错误。我没有和MySQL一起工作那么久,所以我确信这与我无法理解MySQL如何工作有关。
数据库:http://dev.mysql.com/doc/sakila/en/
图表:https://dev.mysql.com/doc/workbench/en/images/wb-sakila-eer.png
我主要与客户合作,租赁,付款。
我需要一份客户列表,其平均租金金额以及最近的租借/退货日期。
SELECT
DISTINCT customer.customer_id, customer.last_name, customer.first_name,
customer.email, AVG(payment.amount) 'Average Rental',
max(rental.rental_date) 'Most Recent Rental Date',
max(rental.return_date) 'Most Recent Return Date'
FROM customer
INNER JOIN rental
ON rental.rental_id = payment.rental_id
AND customer.customer_id = rental.customer_id
INNER JOIN payment
ON payment.rental_id = rental.rental_id
AND payment.customer_id = customer.customer_id
GROUP BY customer_id
ORDER BY customer.last_name;
错误:
Error Code: 1054. Unknown column 'payment.rental_id' in 'on clause'
即使列存在,有人可以解释为什么会出现此错误吗? 另外,我如何解决这种情况。
答案 0 :(得分:0)
您的加入条件顺序错误。在将on
条款中的表格包含在from
中之前,您无法引用它。事实上,你重复了两次相同的条件。试试这个:
SELECT customer.customer_id, customer.last_name, customer.first_name,
customer.email, AVG(payment.amount) "Average Rental",
max(rental.rental_date) as "Most Recent Rental Date",
max(rental.return_date) as "Most Recent Return Date"
FROM customer INNER JOIN
rental
ON customer.customer_id = rental.customer_id INNER JOIN
payment
ON payment.rental_id = rental.rental_id AND
payment.customer_id = customer.customer_id
GROUP BY customer.customer_id
ORDER BY customer.last_name;
请注意,我还将单引号更改为列标识符的双引号。不要使用单引号作为标识符;这通常会导致混乱。使用双引号或反引号。
并且,我删除了distinct
关键字。使用group by
时通常不需要。
我将表名添加到group by
。否则,您将收到不明确的列错误。