sql – 没有连接的插入语句导致重复,之前不存在重复项?
我遇到了一些SQL的问题导致了我不希望的结果.我将来自各种表格的信息存储在另一个表格中,该表格用作网站上搜索页面的一部分.每个页面的所有页面数据以及其他页面上的其他元素(如日历等)的数据都在名为pageContentCache的表中引用.该表通常具有使用以下内容创建的索引:
alter table pageContentCache add constraint [IX_pageContentCache] PRIMARY KEY CLUSTERED ( [objectId] ) 由于某种原因,对我来说似乎是一个重复的objectId,这个软件的一个实例已经开始出现问题,导致以下错误:
所以,为了调试这个问题,我已经得到了将要输入到pageContentCache表中的所有数据加载到临时表#contentcache中的过程,首先,我可以看看它. 这是我开始有点困惑的地方…… 将数据插入#contentcache(有两列,objectId和content)后,我可以运行以下SQL语句,它将不返回任何内容: select objectId,count(objectId) from #contentcache group by objectId having count(objectId) > 1 这不返回任何记录.如果我然后运行以下SQL: insert into pageContentCache (objectId,contentData) select objectId,content from #contentcache 这会将#contentcache中的所有数据插入到pageContentCache中,正如您所期望的那样.但是,如果我然后运行以下SQL,它将返回重复项: select objectId,count(objectId) from pageContentCache group by objectId having count(objectId) > 1 然后返回重复项: objectId (no column name) 21912 2 没有触发器或与此表关联的任何类似的东西,而insert语句只是将数据从一个表复制到另一个表,所以…这个副本来自何处? 解决方法请尝试以下方法:insert into pageContentCache (objectId,contentData) select distinct objectId,content from #contentcache 无法理解为什么你会有重复,因为你提到,你的select语句中没有连接.无论如何,我的猜测是,distinct关键字将确保删除重复项. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |