我对This MySQL声明有疑问。
我是从this post
得到的但是,当我有这样的表时,我不确定如何构造查询。
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个字段。如果没有,我想插入一条记录。
上述查询是否可行。从页面上看不清楚。
答案 0 :(得分:1)
在这些字段的组合上添加唯一键:
ALTER TABLE `tablea` ADD UNIQUE INDEX `compound_key` (`question_id`, `form_id`, `member_id`, `event_id`, `admin_id`);
插入值并添加更新部分:
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`)
答案 1 :(得分: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