Mysql 如果主键值之一不存在';不匹配
我想这样做MySQL查询:Mysql 如果主键值之一不存在';不匹配,mysql,insert,unique-key,not-exists,Mysql,Insert,Unique Key,Not Exists,我想这样做MySQL查询: if((value1 != dbPrimaryValue1) OR (value2 != dbPrimaryValue2)) INSERT ROW else DO NOTHING 让我们来举个例子: CREATE TABLE `tmp` ( `one` int NOT NULL, `two` int NOT NULL, `three` int NOT NULL); ALTER TABLE `tmp` ADD PR
if((value1 != dbPrimaryValue1) OR (value2 != dbPrimaryValue2))
INSERT ROW
else
DO NOTHING
让我们来举个例子:
CREATE TABLE `tmp` (
`one` int NOT NULL,
`two` int NOT NULL,
`three` int NOT NULL);
ALTER TABLE `tmp`
ADD PRIMARY KEY (`one`, `two`);
INSERT INTO `tmp`
(`one`, `two`, `three`)
VALUES (1,2,3);
INSERT INTO `tmp`
(`one`,`two`,`three`)
VALUES (10,20,30),
(1,999,999),
(999,2,999),
(1,2,999)
ON DUPLICATE KEY
UPDATE `one` = `one`; // or some dummy no-source-drain operation
结果如下:
select * from tmp;
+-----+-----+-------+
| one | two | three |
+-----+-----+-------+
| 1 | 2 | 3 |
| 10 | 20 | 30 |
| 1 | 999 | 999 |
| 999 | 2 | 999 |
+-----+-----+-------+
可以进行此查询吗?我正在处理大量数据,无法执行加载->比较->保存等操作。谢谢 只需分别使两个字段唯一即可。例如:
CREATE TABLE `tmp` (
`one` int NOT NULL UNIQUE,
`two` int NOT NULL UNIQUE,
`three` int NOT NULL);
或通过以下方式添加约束:
ALTER TABLE `tmp` ADD UNIQUE (`one`);
ALTER TABLE `tmp` ADD UNIQUE (`two`);
如果创建了唯一的
键约束,则数据库将不允许您自动插入它们
发件人:
唯一索引创建约束
这样,索引中的所有值都必须
要清楚。如果您
尝试添加具有键值的新行
与现有行匹配的。总的来说
引擎,一个唯一的索引允许
包含多个空值的列
可以包含NULL
ALTER TABLE `tmp` ADD UNIQUE (`one`);
ALTER TABLE `tmp` ADD UNIQUE (`two`);