2013-06-26 30 views
6

#1054 - Unknown column 'default_ps_products.manufacturer_id' in 'order clause'未知列

爲什麼會收到與該語句的上述錯誤以下正常工作而不在聲明中p,我沒有使用順序條款?

SELECT * FROM `default_ps_products` p WHERE p.`manufacturer_id` = 2 
+2

您需要使用'ALIAS'而不是表名,因爲您已經在表上定義了一個別名。例如'p.manufacturer_id' –

+0

@JW웃我試過了'SELECT * FROM'default_ps_products' p WHERE p.manufacturer_id = 2'仍然出現同樣的錯誤 –

+0

我看不到一個原因, 'ORDER BY'。你確定這是當你得到錯誤時執行的實際查詢嗎? –

回答

4

既然你張貼了部分查詢這不是明顯從一開始,但是你full query清楚。

SELECT * 
FROM default_ps_products 
WHERE manufacturer_id=2 
ORDER BY `default_ps_products`.`manufacturer_id` ASC 
LIMIT 0, 30 

當您在選擇添加一個別名default_ps_products表,你不能只選擇性地在WHERE子句中使用別名,你還需要改變ORDER BY使用相同的別名。換句話說,完整的查詢應該是;

SELECT * 
FROM default_ps_products p 
WHERE p.manufacturer_id=2 
ORDER BY p.`manufacturer_id` ASC 
LIMIT 0, 30 
1

您的查詢完好。當我運行這個查詢時沒有任何錯誤。查詢沒有任何問題。

SELECT * FROM default_ps_products AS p WHERE p.manufacturer_id = 2 它做工精細:)

9

要解決此問題,請使用SELECT p.* FROM而不是SELECT * FROM

原因是phpMyAdmin正在將ORDER BY添加到結果網格中第一列的查詢中。由於別名,執行此操作的代碼失敗。

此問題在phpMyAdmin 4.0.6上重現。我不知道最新的狀態4.2.5

+0

即使沒有ORDER BY子句,也可以得到此錯誤。這個答案解決了這個問題。 Isaksson的答案不是。 –

1

打開你的phpmyadmin。點擊你選擇的數據庫。現在你有一張右側所有表格的列表。點擊default_ps_products表的結構。現在你看到它的結構。現在單擊SQL選項卡並執行查詢,如'SELECT * FROM default_ps_products ORDER BY'。 一旦你執行這個查詢,現在解決你的問題。