如果该对不存在,我怎么能插入一行?
*注意这些不是主键,我的主键设置为自动增量
尝试插入忽略但不起作用
INSERT IGNORE INTO mytable (`myid`, `theirid`) VALUES ('5', '1')
ON DUPLICATE KEY <DO NOTHING>
Run Code Online (Sandbox Code Playgroud)
表看起来像:
CREATE TABLE `mytable` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`myid` bigint(20) NOT NULL,
`theirid` bigint(20) NOT NULL,
`activated` tinyint(1) NOT NULL DEFAULT '0',
`dateStamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1$$
Run Code Online (Sandbox Code Playgroud)
ype*_*eᵀᴹ 11
1)你可以添加UNIQUE约束(myid, theirid)吗?如果是,请添加此约束并使用:
INSERT INTO mytable (myid, theirid)
VALUES (5, 1) ;
Run Code Online (Sandbox Code Playgroud)
并忽略产品警告(或替换上面的INSERT IGNORE)
2)如果你不能添加这样的约束(例如,你有时想要允许这样的重复,有时你不允许),你可以使用这个:
INSERT INTO mytable (myid, theirid)
SELECT 5, 1
FROM dual
WHERE NOT EXISTS
( SELECT *
FROM mytable
WHERE myid = 5
AND theirid = 1
) ;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14520 次 |
| 最近记录: |