MySQL手册指出:
如果您指定 ON DUPLICATE KEY UPDATE,并且插入的行会导致 UNIQUE 索引或 PRIMARY KEY 中出现重复值
如果您的表没有唯一索引或主键,但您不想复制列的条目(例如 user_id),该怎么办。
有没有办法在 MySQL 中做到这一点?
MySQL手册指出:
如果您指定 ON DUPLICATE KEY UPDATE,并且插入的行会导致 UNIQUE 索引或 PRIMARY KEY 中出现重复值
如果您的表没有唯一索引或主键,但您不想复制列的条目(例如 user_id),该怎么办。
有没有办法在 MySQL 中做到这一点?
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
尝试这个:
INSERT INTO `table` (userid)
SELECT 'value for userid' FROM `table`
WHERE userid = 'value for userid' HAVING count(*) = 0
如果您希望数据库控制数据完整性,那么 UNIQUE 索引就是 MYSQL 在该数据上创建 UNIQUE 约束的简单方式。
如果您不希望数据库负责数据完整性,那么您将需要通过您的应用程序或 ETL 代码以其他方式控制数据。通常这将涉及预先扫描表以验证该值不存在,然后执行插入。
对您想要做什么有一个更清晰的问题,我们可以帮助您提供更好的答案。