0

このMySQLステートメントについて質問があります。

私はこの投稿からこれを得ました

ただし、このようなテーブルがある場合、クエリを構造化する方法がわかりません。

     TableA
     --------
     id ==> Auto Increment field
     question_id
     form_id
     member_id
     event_id
     admin_id 
     desc
     is_cand_field
     c_field_id

これで、question_id, form_id, memmber_id, event_id, admin_id同じにすることができます。desc, is_cand_field, c_field_id変えられる。挿入するときに、この組み合わせが存在するかどうかを確認したいと思います。存在する場合は、最後の3つのフィールドを更新します。そうでない場合は、レコードを挿入します。

これは、上記のクエリで可能ですか。そのページからは明らかではありません。

4

2 に答える 2

1
  1. これらのフィールドの組み合わせに一意のキーを追加します。

    ALTER TABLE `tablea` ADD UNIQUE INDEX `compound_key` (`question_id`, `form_id`, `member_id`, `event_id`, `admin_id`);
    
  2. 値を挿入し、更新セクションを追加します。

    INSERT INTO tablea (`question_id`, `form_id`, `member_id`, `event_id`, `admin_id`, `desc`, `is_cand_field`, `c_field_id`)
    VALUES (1, 2, 3, 4, 5, 1, 0, 1)
    ON DUPLICATE KEY UPDATE `desc` = VALUES(`desc`), is_cand_field = VALUES(`is_cand_field`), c_field_id = VALUES(`c_field_id`)
    
于 2012-08-21T19:42:49.027 に答える
0

セクションに複数の行を追加できますON DUPLICATE KEY UPDATE

INSERT INTO TableA (form_id, member_id, event_id, admin_id, desc, is_cand_field, c_field_id)
VALUES (2, 3, 4, 5, 'b', 0, 1)
ON DUPLICATE KEY UPDATE desc='a', is_cand_field=1, c_field_id=2
于 2012-08-21T19:35:04.567 に答える