我有一个结构表:id(INT, PK), entryid(INT), date(INT), region(CHAR), location(ENUM), views(INT)
。除 id 之外的所有字段都是非唯一的。
如何插入一条记录,如果有相同的entryid,date,region,location
,则忽略,否则插入到表中?
顺便说一句,我正在使用 mysql。
最佳答案
是的,在 mysql 中有一个特殊版本的插入语句:
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
);
关于mysql - 插入记录和忽略的 SQL 语法存在索引而不是主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8794784/