我有一个结构表:id(INT, PK), entryid(INT), date(INT), region(CHAR), location(ENUM), views(INT)
。除id之外的所有字段都是非唯一的。
如何插入记录,如果有相同的entryid,date,region,location
,则忽略,否则插入表格?
BTW,我正在使用mysql。
答案 0 :(得分:4)
是的,mysql中有一个特殊版本的insert语句:
INSERT INTO table
VALUES (...)
ON DUPLICATE KEY UPDATE entryid = ?, etc -- this modifier will do the trick
咨询the mysql manual entry for this syntax以获取完整说明
此行为适用于主键相同。要使它适用于多个列,您需要一个多列主键,您可以为此为表定义:
create table mytable (
entryid int,
date int,
region char,
location enum ('a', 'b', 'c'),
views int,
primary key (entryid, date, region, location) -- list your key field like this
);