插入记录和忽略的SQL语法存在索引而不是主键

时间:2012-01-09 20:31:14

标签: mysql sql

我有一个结构表:id(INT, PK), entryid(INT), date(INT), region(CHAR), location(ENUM), views(INT)。除id之外的所有字段都是非唯一的。

如何插入记录,如果有相同的entryid,date,region,location,则忽略,否则插入表格?

BTW,我正在使用mysql。

1 个答案:

答案 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
);