0


0

誰でも助けてください。

SELECTそれ自身の作品

VALUESを使用したINSERT単独でも機能します。

注意:

products_similarには2つの列があります。VARCHARS get_cheaper() -  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 - 'field list’の未知の列 'product_sku'

get_cheaper(p.product_sku)cheaper_skuをコメントアウトすると、うまくいきます。

TRUNCATE TABLE `products_similar`;#MySQLが空の結果セットを返しました(例: ゼロ行)。 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;#影響を受ける行:43882

3 Answer


1


おそらくこれは `SELECT p.product_sku sku`の名前変更によるものです。 product_skuという列名が想定されています。


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 jos_vm_product p;

通常のテーブルと同じようにビューをクエリできます。


0


これは mysqlマニュアルからのこの質問に対する答えです。

以下の列定義はそれぞれの可能性を示しています。

自動初期化および自動更新:ts TIMESTAMPデフォルトCURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

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

自動更新のみ:ts TIMESTAMP DEFAULT 0からUPDATE CURRENT_TIMESTAMPまで

どちらも:ts TIMESTAMP DEFAULT 0

あなたは最後のものに興味があります - あなたが0にタイムスタンプのデフォルト値を設定するならば、それは自動的に更新されないでしょう