mysql仅在不存在时插入';行不通
我读了一些关于这个主题的文章,尝试了很多,但是我的代码不起作用。如果我的表中已经存在一个数据集,我不想插入它两次 我的表格“WORD”中有一些示例数据(id是自动递增的) 我只想检查客户id、类别id、word。如果新行具有完全相同的customer\u id、category\u id和word,我不想插入它。评论和id不重要 我的代码:mysql仅在不存在时插入';行不通,mysql,Mysql,我读了一些关于这个主题的文章,尝试了很多,但是我的代码不起作用。如果我的表中已经存在一个数据集,我不想插入它两次 我的表格“WORD”中有一些示例数据(id是自动递增的) 我只想检查客户id、类别id、word。如果新行具有完全相同的customer\u id、category\u id和word,我不想插入它。评论和id不重要 我的代码: insert into word (customer_id, category_id, word) select * from (select null,
insert into word (customer_id, category_id, word)
select * from (select null, 2, 'Day') as tmp
where not exists (select * from word where customer_id=null and category_id=2 and word='Day')
limit 1
插入以下内容:(
他正在插入它,虽然我有一行(id=3)为null/2/Day。新插入的一行有null注释,其他的有comment week,但这并不重要
我的错在哪里
select * from word where customer_id=null
应该是
select * from word where customer_id IS NULL
请参阅手册中的此站点:
避开语句中的解决方法的一种方法是在这些列上设置一个唯一的索引,如果您的用例允许约束的话
唯一索引创建一个约束,使索引中的所有值
必须是不同的。如果尝试添加具有
与现有行匹配的键值。对于所有引擎,一个唯一的
索引允许包含NULL的列具有多个NULL值。
如果为唯一索引中的列指定前缀值,则
列值在前缀中必须是唯一的
检查这个答案“=null”…我真丢脸。谢谢你们!这也是为什么带有customer_id的行工作正常,而带有null的行不正常的原因。
select * from word where customer_id IS NULL