MySQL INSERT INTO ... SELECT#1054 ERROR

时间:2009-08-05 15:07:02

标签: mysql sql stored-procedures mysql-error-1054

任何人都可以帮忙..

选择自己的作品

使用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

3 个答案:

答案 0 :(得分:1)

据推测,这是由于重命名:SELECT p.product_sku sku。期望产品名称为product_sku。

答案 1 :(得分: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;

您将能够像普通表一样查询视图

答案 2 :(得分:0)

以下是来自mysql manual的问题的答案:

以下列定义说明了每种可能性:

自动初始化和自动更新: ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP更新CURRENT_TIMESTAMP

仅限自动初始化: ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP

仅限自动更新: ts TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP

既不: ts TIMESTAMP DEFAULT 0

您对最后一项感兴趣 - 如果您将时间戳的默认值设置为0,则不会自动更新