6

MySQL手册指出:

如果您指定 ON DUPLICATE KEY UPDATE,并且插入的行会导致 UNIQUE 索引或 PRIMARY KEY 中出现重复值

如果您的表没有唯一索引或主键,但您不想复制列的条目(例如 user_id),该怎么办。

有没有办法在 MySQL 中做到这一点?

4

3 回答 3

6
INSERT INTO `table` (value1, value2) 
SELECT 'stuff for value1', 'stuff for value2' FROM `table` 
WHERE NOT EXISTS (SELECT * FROM `table` 
                  WHERE value1='stuff for value1' AND value2='stuff for value2') 
LIMIT 1

资料来源:如何在 MySQL 中“如果不存在则插入”?

于 2012-06-22T16:21:28.073 回答
2

尝试这个:

INSERT INTO `table` (userid)
SELECT 'value for userid' FROM `table` 
  WHERE userid = 'value for userid' HAVING count(*) = 0
于 2012-06-22T17:18:27.923 回答
1

如果您希望数据库控制数据完整性,那么 UNIQUE 索引就是 MYSQL 在该数据上创建 UNIQUE 约束的简单方式。

如果您不希望数据库负责数据完整性,那么您将需要通过您的应用程序或 ETL 代码以其他方式控制数据。通常这将涉及预先扫描表以验证该值不存在,然后执行插入。

对您想要做什么有一个更清晰的问题,我们可以帮助您提供更好的答案。

于 2012-06-22T16:38:06.750 回答