2016-06-29 6 views
0

このMySQL挿入クエリは私にError Code: 1241. Operand should contain 1 column(s)を与えています。MySQL INSERTエラーオペランドには1つのカラムが含まれている必要があります

INSERT INTO esjp_content 
    (esjp_content.primary_key, esjp_content.template_id, esjp_content.section_ref, 
    esjp_content.position, esjp_content.indent, esjp_content.content, 
    esjp_content.summary_id, esjp_content.role_ref, esjp_content.author_id, 
    esjp_content.event_id, esjp_content.sys_time) 
VALUES 
    ((3, 1, 1, 0, 0, 'Some test content.', 0, 1, 1, 69, UNIX_TIMESTAMP(NOW())), 
    (4, 1, 1, 1, 1, 'Some test content2.', 0, 1, 1, 69, UNIX_TIMESTAMP(NOW()))) 
ON DUPLICATE KEY UPDATE 
    esjp_content.primary_key=VALUES(esjp_content.primary_key), 
    esjp_content.template_id=VALUES(esjp_content.template_id), 
    esjp_content.section_ref=VALUES(esjp_content.section_ref), 
    esjp_content.position=VALUES(esjp_content.position), 
    esjp_content.indent=VALUES(esjp_content.indent), 
    esjp_content.content=VALUES(esjp_content.content), 
    esjp_content.summary_id=VALUES(esjp_content.summary_id), 
    esjp_content.role_ref=VALUES(esjp_content.role_ref), 
    esjp_content.author_id=VALUES(esjp_content.author_id), 
    esjp_content.event_id=VALUES(esjp_content.event_id), 
    esjp_content.sys_time=VALUES(esjp_content.sys_time); 

私は一度に1つのレコードを挿入しようとする場合は、正常に動作しますが、私はINSERTは、単一のステートメントで複数のレコードを挿入するために許可されていると考え。何か案は?

P.S.私はクエリが言い方であることを知っていますが、それはプログラム的に生成されるので問題ありません。

+0

' - あなたはそこに何も更新しません。そうでしょう? – Alex

+0

@Alex表の唯一の一意キーは 'primary_key'です。値がすでに存在する場合は、レコードのすべてのフィールドを、渡されるデータに関係なく更新する必要があります。さもなければ、(指定された 'primary_key'フィールドはゼロでなければなりません。)新しいレコードをテーブルに追加します。 –

+0

@Alex私はそれを認識しています。それはエラーが発生しているので何もしません。だから私は助けを求めている。それをより良くするための建設的な提案があれば、私はアイデアを公開しています。 –

答えて

2

悪いですが、あなたの質問はOKです。あなたはいくつかのタイプミスがあります。ここ

一つ余分に開いブレース:((3,

そしてここで1つの閉じ括弧:69, UNIX_TIMESTAMP(NOW())))

推測あなたはすべてが正常に動作する必要があり、ことを修正した場合。役に立たないDUPLICATE KEY UPDATE` ON

http://sqlfiddle.com/#!9/1e9f3f/1

INSERT INTO esjp_content 
    (esjp_content.primary_key, esjp_content.template_id, esjp_content.section_ref, 
    esjp_content.position, esjp_content.indent, esjp_content.content, 
    esjp_content.summary_id, esjp_content.role_ref, esjp_content.author_id, 
    esjp_content.event_id, esjp_content.sys_time) 
VALUES 
    ( 3, 1, 1, 0, 0, 'Some test content.', 0, 1, 1, 69, NOW()), 
    (4, 1, 1, 1, 1, 'Some test content2.', 0, 1, 1, 69, NOW() + INTERVAL 1 DAY) 
ON DUPLICATE KEY UPDATE 
    esjp_content.primary_key=VALUES(esjp_content.primary_key), 
    esjp_content.template_id=VALUES(esjp_content.template_id), 
    esjp_content.section_ref=VALUES(esjp_content.section_ref), 
    esjp_content.position=VALUES(esjp_content.position), 
    esjp_content.indent=VALUES(esjp_content.indent), 
    esjp_content.content='updated', 
    esjp_content.summary_id=VALUES(esjp_content.summary_id), 
    esjp_content.role_ref=VALUES(esjp_content.role_ref), 
    esjp_content.author_id=VALUES(esjp_content.author_id), 
    esjp_content.event_id=VALUES(esjp_content.event_id), 
    esjp_content.sys_time=VALUES(esjp_content.sys_time); 
+0

ありがとう!私はSQL Fiddleをブックマークしました。前にそのサイトを見たことはありませんが、素晴らしいツールのように見えます! :) –

+0

あなたは非常に歓迎しています:-)それが存在する理由は:私たちの知識と経験を共有するhep :-)あなたのプロジェクトで幸運 – Alex

関連する問題