2017-02-20 16 views
0

そこで、UPSERTクエリを実装します。私はクエリして最初にユーザーが存在しているかどうかを確認したいのではなく、挿入中にチェックして、ユーザーが存在する場合はフィールドを更新したいと思っています。私はこれらのすべてのクエリを試みましたが、何もしませんでした。テーブルにユーザIDが存在するかどうかを確認してください。else update mysqlバージョン5.7.15に挿入してください。

INSERT INTO `sys_cart` (`userid`, `product_ids`, `date_added`, `date_updated`, `date_deleted`) 
VALUES (2 ,`3,4`, `2017-02-01 00:00:00`, `2017-02-01 00:00:00`, null) 
ON DUPLICATE `sys_cart.userid` UPDATE `product_ids` = '12,13'; 

INSERT INTO 'sys_cart' 
VALUES (4, '34,12', '2017-02-01 00:00:00', '2017-02-01 00:00:00', null) 
ON DUPLICATE userid UPDATE product_ids = VALUES('3,4'); 

INSERT INTO 'sys_cart' 
VALUES (4, 'Gorilla', '2017-02-01 00:00:00', '2017-02-01 00:00:00', null) 
ON DUPLICATE userid UPDATE product_ids; 

INSERT INTO 'sys_cart' 
VALUES (4, 'Gorilla', '2017-02-01 00:00:00', '2017-02-01 00:00:00', null) 
ON DUPLICATE userid UPDATE product_ids = VALUES('3,4'); 

INSERT INTO sys_cart (userid, product_ids, date_added, date_updated, date_deleted) 
VALUES (4, "Gorilla", "2017-02-01 00:00:00", "2017-02-01 00:00:00", null) 
ON DUPLICATE userid UPDATE product_ids = VALUES("3,4"); 

INSERT INTO sys_cart (userid, product_ids, date_added, date_updated, date_deleted) 
VALUES (4, "Gorilla", "2017-02-01 00:00:00", "2017-02-01 00:00:00", null) 
ON DUPLICATE userid UPDATE product_ids = "3,4"; 

どこが間違っていますか?

+0

カンマ区切りの値をテーブルの列に配置しないでください。別の多対多リレーションシップテーブルを使用します。 – Barmar

答えて

1

documentationによると、構文はON DUPLICATE KEYで、文字通りです。 を指定することはできません。カラムがクエリのキーです。これはテーブルレベルで定義されています。

あなたの構文は次のようになります。

INSERT INTO sys_cart 
VALUES (4, '34,12', '2017-02-01 00:00:00', '2017-02-01 00:00:00', null) 
ON DUPLICATE KEY UPDATE product_ids = VALUES(product_ids) 

あなたも欠落している可能性があり何useridsys_cartPRIMARY KEYとして定義されなければならないということです。あなたが対処するのは難しいだろう、単一のフィールド、にCSVを製品IDの子テーブルを使用するのではなく、詰め物を検討する必要があり、余談として

ALTER TABLE sys_cart 
MODIFY COLUMN userid INT PRIMARY KEY 

:あなたのような何かをする必要があるかもしれません後で。

+0

"Unrecognized keyword(Near KEY)"というエラーが発生します。プライマリキーとしてuseridを設定しました。主キーはINTでもあり、自動インクリメントに設定されています。 –

+0

@AbhijeetChakravortyなぜあなたはエラーを起こすのか分かりません。この構文は明らかに[doc](https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html) – Bohemian

+0

Hurrayy !!!です。私はidキーを削除し、主キーとしてユーザーIDをリセットした後、それは働いた。ありがとう、トン! @ボヘミアン –

関連する問題