我收到错误#1060-重复的列名“ pizzeria”,并且不确定如何解决。
问题是 :
查找提供最便宜的意大利辣香肠比萨饼的比萨店。如果是领带,请退回所有最便宜的意大利辣香肠比萨饼。
SELECT C.pizzeria
FROM (SELECT pizzeria FROM Serves WHERE pizza="pepperoni") C
LEFT JOIN
(SELECT A.pizzeria, A.price, B.pizzeria, B.price
FROM Serves A, Serves B
WHERE A.pizza = "pepperoni" and B.pizza="pepperoni" and A.price>B.price) D
ON C.pizzeria = D.pizzeria
WHERE D.pizzeria is NULL
最佳答案
请尝试以下查询:
SELECT C.pizzeria
FROM (SELECT pizzeria FROM Serves WHERE pizza="pepperoni") C
LEFT JOIN
(SELECT A.pizzeria AS apizzeria, A.price, B.pizzeria AS bpizzeria, B.price
FROM Serves A, Serves B
WHERE A.pizza = "pepperoni" and B.pizza="pepperoni" and A.price>B.price) D
ON C.pizzeria = D.apizzeria
WHERE D.pizzeria is NULL;
这行
SELECT A.pizzeria, A.price, B.pizzeria, B.price
生成一个中间结果集,如下所示:pizzeria price pizzeria price
.. .. ... ...
因此,当您使用
D.pizzeria
时,它将找到它对应的列作为duplicate
。实际上,在从D.pizzeria
和A.pizzeria
(选择哪个?)中选择B.pizzeria
时,它陷入了模棱两可的情况。因此,通过使用列别名来消除此问题。