在我的数据库中,我tickets_users
将用户加入了故障单。
如果还没有INSERT
(例如用户1444)和tickets_users
(例如票证),我想执行users_id
检查type = 2 WHERE tickets_id = something
第455号);如果它已经存在则什么都不做,否则为
INSERT INTO tickets_users (tickets_id, users_id, type) VALUES (455, 1444, 2)
WHERE tickets_id = 455
答案 0 :(得分:4)
您可以在具有相应字段的表上使用PRIMARY KEY或UNIQUE Index来停止重复记录。
PRIMARY KEY
使用INSERT IGNORE而不是INSERT。如果记录没有复制现有记录,MySQL会像往常一样插入它。如果记录是重复的,则IGNORE关键字告诉MySQL以静默方式丢弃它而不会产生错误。
INSERT IGNORE
例如:假定id为主键。如果表'tablename'中的记录已经有id = 1的记录,则只会忽略该查询而不是产生警告。
注意:仅在开发阶段使用IGNORE关键字。它可能会导致意外结果,因为您无法识别是否已插入记录。
答案 1 :(得分:3)
INSERT INTO tickets_users (tickets_id, users_id, type)
select 455, 1444, 2 from dual
WHERE not exists (select 1 from tickets_users where type = 2 and tickets_id = something)
试试这个
编辑:
添加多行
INSERT INTO tickets_users (tickets_id, users_id, type)
select 455, 1444, 2 from dual
WHERE not exists (select 1 from tickets_users where type = 2 and tickets_id = 455)
union all
select 456, 1444, 2 from dual
WHERE not exists (select 1 from tickets_users where type = 2 and tickets_id = 456)