2009-08-05 21 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

+0

問題はストアドプロシージャget_cheaper()にあります。しかしこれはmysqlなので、これを見つけることは別の話題です。 とにかく助けてくれてありがとう。 – Engrost

答えて

1

恐らくこれは名前変更のためです:SELECT p.product_sku sku。 product_skuの列名が必要です。

+0

それは間違いなくそれです。名前に違いがあるかどうかを確認するためにエイリアスを追加しました。答えはNOです。 – Engrost

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

はい、あります。投稿自体ではっきりさせてくれて申し訳ありません。 単独で挿入すると、値を入力すると同様に機能します。ちょうど私がそれら2つを組み合わせるとき。私はそれがストアドルーチンget_cheaper()....と関係していると思いますが、理由は分かりません。これに関するドキュメントの情報が見つかりませんでした。 – Engrost

0

のようなビューを照会することができるようになりますがmysql manualからこの質問への答えです:

次の列定義は、各可能性を実証自動初期化および自動更新: ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

自動初期化のみ: TS TIMESTAMP DEFAULT CURRENT_TIMESTAMP

自動更新のみ: のts TIMESTAMPのDEFAULT 0どちら

UPDATE CURRENT_TIMESTAMP ON: TS TIMESTAMPのDEFAULT 0

あなたは最後に興味があります1 - タイムスタンプのデフォルト値を0に設定すると、自動的に更新されません。

関連する問題