この作業をする必要があります:
はmytableはから列として最大(のproductID)とprice_value4を選択し、その結果を挿入します。
あなたはあなただけのPRODUCT_IDすると、あなたは価格だけを挿入する必要があります自動インクリメントIDキーを追加することができ、いくつかの番号をジャンプするつもりはない場合は、プロダクトIDが自動的にインクリメントされます
INSERT INTO mytable (SELECT MAX(productId) + 1, 'price_value4' FROM mytable);
.. これは、そうします:
ALTER TABLE mytable
MODIFY COLUMN `productId` INT(10) UNSIGNED PRIMARY KEY AUTO_INCREMENT;
あなたはINT(10)INTを変更することができます(5)あなたがあなたのProductID列に与えたいサイズにdepanding例えば
EDIT:彼のソリューションは 一部suggetionsを働かない理由をコメント欄にOPの質問への見返りとして
は、あなたが私の場合、それは
を返します。..いつもカッコ
INSERT INTO mytable VALUES ((SELECT MAX(ID)+1 FROM mytable) , price_value4)
間のインサートでSELECTなステートメントをしなければならないと言います
(1093):あなたは、FROM句
に更新のための 'mytableは' ターゲット表 を指定することはできません
AND HERE IS WHY(ドキュメントから引用)
から選択し、同じテーブルに挿入する場合、MySQLはSELECTから行を保持するため 内部一時テーブルを作成し、ターゲットテーブルにこれらの行を挿入 。 tはTEMPORARYテーブル、 ときに一時テーブルを参照することができないので、しかし、あなたはTから... SELECT ...トンINTO INSERTを使用することはできません二度同じ 文で
しかしがあるにFROMのテーブル自体の代わりにクエリを使用することで克服することができます。これは、更新するテーブルの参照ではなく、要求されたテーブルの値をコピーするという効果があります。
INSERT INTO mytable VALUES (
(SELECT MAX(ID)+1 FROM (SELECT * FROM mytable) as mytmp),
'price_value4');
OR
選択および INSERTが同じテーブルを参照する場合、あいまいな列参照問題を回避するために使用される各テーブル の一意のエイリアスを提供する(ドキュメントから引用) SELECTパーツを作成し、そのパーツの列名を 適切な別名で修飾します。
INSERT INTO mytable Values ((SELECT MAX(ID)+1 FROM mytable as mytmp) , 'price_value4')
私はmytable' FROMこの部分 'price_value4を理解していないが、price_value4はテーブルではありません。そしてそれは構文エラーをもたらします。 – codeFish
'price_value4'はあなたが挿入したい価格なので、基本的に' 5または6. 'のような値か 'price_value4、price_value5 ...'という言葉を 'select productID' 5 'from mytable'構文エラーは返されません – AnouarZ
hmm strangeですが、構文エラーが返されます。関連性が高いようですが、私はMariaDBを使用しています。それは何かを変えますか?私はprice_value4に続いて 'FROM mytable'のポイントを理解していません。あなたはそれを説明してもらえますか? – codeFish