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 回答