2016-04-27 76 views
0

我收到錯誤#1060 - 重複列名'pizzeria',我不知道如何解決它。我無法弄清楚如何解決mySQL查詢中的錯誤

現在的問題是: 找到供應最便宜的意大利辣香腸披薩的比薩餅店。在關係的情況下,返回所有最便宜的辣香腸比薩店。

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 

回答

2

嘗試以下查詢請:

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。事實上,它被困在模棱兩可的情況下,而從A.pizzeriaB.pizzeria(哪一個可供選擇?)選擇D.pizzeria。所以通過使用列別名來消除這一點。

1

問題在於,在您的左連接語法下,您已列出a.pizzeria和b.pizzeria。這個內聯視圖然後被加入到c.pizzeria中,但是編譯器無法分辨出你正在加入的內聯視圖中的哪個pizzeria列。

我很好奇你真的想完成什麼,因爲你有優化器做了很多工作。

相關問題