MySQL手册状态:如何在没有UNIQUE索引或PRIMARY KEY的MySQL中使用ON DUPLICATE KEY UPDATE?
如果你指定ON DUPLICATE KEY UPDATE,并且插入一行是 将在
,如果你有什么UNIQUE索引或PRIMARY KEY导致重复值一个没有UNIQUE索引或PRIMARY KEY的表,但不想复制列的条目(比如user_id)。
有没有办法在MySQL中做到这一点?
MySQL手册状态:如何在没有UNIQUE索引或PRIMARY KEY的MySQL中使用ON DUPLICATE KEY UPDATE?
如果你指定ON DUPLICATE KEY UPDATE,并且插入一行是 将在
,如果你有什么UNIQUE索引或PRIMARY KEY导致重复值一个没有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
我的情况是相同的,但我想要的是如果记录存在然后更新该记录,是否有可能没有唯一的主键 – pitu
如果你希望数据库来控制数据的完整性,那么唯一索引只需要创建该数据UNIQUE约束的MySQL的方式。
如果您不希望数据库负责数据完整性,则需要通过其他方式(通过应用程序或ETL代码)控制数据。通常这将涉及事先扫描表以验证该值不存在,然后执行插入。
对于您要做的事情有一个更清晰的问题,我们可以帮助提供更好的答案。
试试这个:
INSERT INTO `table` (userid)
SELECT 'value for userid' FROM `table`
WHERE userid = 'value for userid' HAVING count(*) = 0
有什么理由,你为什么不设置一个唯一的标识列是唯一索引? – Dancrumb
您最好的选择是为该列添加一个'UNIQUE'索引。 – hafichuk
如果你有没有主键的表,那么在你做其他事情之前必须先解决这个问题。 – HLGEM