MySQL INSERT INTO ... ВЫБРАТЬ # 1054 ОШИБКА - PullRequest
0 голосов
/ 05 августа 2009

Может кто-нибудь, пожалуйста, помогите ..

ВЫБРАТЬ на своих работах

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) cheap_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 ]

1 голос
/ 05 августа 2009

Предположительно это связано с переименованием: SELECT p.product_sku sku. Ожидается имя столбца product_sku.

0 голосов
/ 04 октября 2011

Вот ответ на этот вопрос из 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, оно не будет автоматически обновлено

0 голосов
/ 05 августа 2009

Работает ли эта часть вашего запроса самостоятельно?

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

Edit:

Так как это работает, попробуйте создать вид из него.

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

Вы сможете запрашивать представление так же, как обычная таблица

...