2009-08-05 119 views
0

任何人可以請幫助..MySQL的INSERT INTO ... SELECT#1054 ERROR

對自己的作品

SELECT

INSERT自身與VALUES作品也。

注:

products_similar has 2 columns VARCHARS 
get_cheaper() - stored routine returning VARCHAR 

我從來沒有使用過INSERT INTO的問題... SELECT。

但是,當我將它們結合起來,我得到的錯誤如下:

SQL查詢:文檔

INSERT INTO `products_similar` (
`product_sku` , 
`better_priced_sku` 
) 
SELECT p.product_sku sku, get_cheaper(
p.product_sku 
)cheaper_sku 
FROM jos_vm_product p; 

MySQL表示:文件

#1054 - 在 '字段列表' 未知列 'product_sku'

當我註釋掉get_cheaper(p.product_sku)cheaper_sku它的工作原理:

TRUNCATE TABLE `products_similar` ;# MySQL returned an empty result set (i.e. zero rows). 
INSERT INTO `products_similar` (
`product_sku` , 
`better_priced_sku` 
) 
SELECT p.product_sku sku, p.product_sku sku# , get_cheaper(p.product_sku) cheaper_sku 

FROM jos_vm_product p;# Affected rows: 43882 
+0

剛剛嘗試臨時表...但它給了我同樣的錯誤: CREATE TEMPORARY TABLE my_temp_table AS SELECT p.product_sku,get_cheaper(p.product_sku)better_priced_sku FROM jos_vm_product p – Engrost 2009-08-05 15:54:01

+0

我還有一個線索,問題在於存儲過程get_cheaper()。但它是mysql,所以找到這個是另一個話題。 無論如何感謝您的幫助。 – Engrost 2009-08-10 11:47:25

回答

1

推測這是由於重命名:SELECT p.product_sku sku。預計product_sku的列名稱。

+0

這絕對不是。我添加了別名以檢查名稱是否有所不同。答案是否定的。 – Engrost 2009-08-05 15:14:54

0

查詢的這部分工作是由它自己完成的嗎?

SELECT p.product_sku sku, get_cheaper(p.product_sku)cheaper_sku 
FROM jos_vm_product p; 

編輯:

因爲這樣的作品,嘗試創建從來看。

CREATE VIEW products_similar 
AS SELECT p.product_sku sku, get_cheaper(p.product_sku)cheaper_sku 
FROM jos_vm_product p; 

您將能夠查詢視圖就像一個正常的表

+0

是的。對不起,在郵件本身沒有更清楚。 單獨插入,當我把值放入它也適用。就在我將這兩者結合在一起時。我認爲它與存儲的例程get_cheaper()...有關,但不知道爲什麼。在有關這方面的文檔中找不到任何信息。 – Engrost 2009-08-07 10:07:39

0

這裏是mysql manual回答這個問題:

下面列定義演示各種可能性:

自動初始化和自動更新: ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

自動初始化只: TS TIMESTAMP DEFAULT CURRENT_TIMESTAMP

自動更新只: TS TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP

既不: TS TIMESTAMP DEFAULT 0

你有興趣在最後一個 - 如果你設置時間戳的默認值爲0它不會被自動更新