专业的游戏资讯门户网站,爱游戏就上Gmae234!
game234首页 > 问答列表 >

sql 已更新或删除的行值要么不能使该行成为唯一行

请问:sql 已更新或删除的行值要么不能使该行成为唯一行
请注意:本网坚决拥护中国共产党领导,坚决打击任何违规违法内容,若您发现任何有害信息,请E-Mail:513175919@qq.com举报,我们核实后将给予现金奖励!爱国是每个中国人应尽的责任,爱国从我做起!为实现中国梦,实现中国腾飞而努力!

   IIS 8.5 详细错误 - 404.0 - Not Found

HTTP 错误 404.0 - Not Found

您要找的资源已被删除、已更名或暂时不可用。

最可能的原因:

  • 指定的目录或文件在 Web 服务器上不存在。
  • URL 拼写错误。
  • 某个自定义筛选器或模块(如 URLScan)限制了对该文件的访问。

可尝试的操作:

  • 在 Web 服务器上创建内容。
  • 检查浏览器 URL。
  • 创建跟踪规则以跟踪此 HTTP 状态代码的失败请求,并查看是哪个模块在调用 SetStatus。有关为失败的请求创建跟踪规则的详细信息,请单击此处

详细错误信息:

模块   IIS Web Core
通知   MapRequestHandler
处理程序   ASPClassic
错误代码   0x80070002
请求的 URL   http://172.21.0.17:80/asku.asp?id=27415614
物理路径   C:\web\asku.asp
登录方法   匿名
登录用户   匿名

详细信息:

此错误表明文件或目录在服务器上不存在。请创建文件或目录并重新尝试请求。

查看详细信息 »

   2019-04-24 14:03:56


采纳答案   问题原因:
这种问题大多是由于没有主键(PK)导致同一张表中存在若干条相同的数据
DBMS存储时,只为其存储一条数据,因为DBMS底层做了优化,以减少数据冗余。所以删除或更新一条重复数据就牵一发而动全身
解决方法:
推荐设置主键,检查是否存在相同行数据
   2019-04-24 14:03:56

 先确认一下表中有没有主键,要是没有就得使用临时表来实现删除重复的行。
方法一:
DELETE FROM 表名 WHERE 主键字段名 IN(
SELECT MAX(主键字段名) AS 主键字段名 FROM 表名 GROUP BY 其他字段 HAVING COUNT(1)>1)
方法二:
SELECT 字段列表 INTO #T FROM 表名 GROUP BY 字段列表
--先删除原来的数据表,再插入不重复的语句
TRUNCATE TABLE 表名
INSERT INTO 表名 SELECT * FROM #T
DROP TABLE #T
示例:
方法一:
delete from tab_test2 where id=(select max(id) from tab_test2 group by id,uid having count(1)>1)

方法二:注意:#t是临时表,在tempdb数据库中的临时表节点下可以找到,sqlserver服务重启就会消失的表.
select id,uid into #t from tab_Test2 group by id,uid
truncate table tab_Test2
insert into tab_Test2 select * from #t
msdn:
在进行SQL数据库维护时,发现有几行记录明显有错误却删除不了,一执行删除命令就提示“已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行(X行)。”表现为在:数据库中出现了重复的键值或数据,当试图删除时错误提示信息就出来了。建立的几个表都没有关键字,设置好关键字后问题解决。
微软的官方网站对此问题也有说明,BUG: 您可能会收到当您尝试使用 SQL Server Management Studio 更新 SQL Server 2005 中的表的行时 微软给了个替代方法:要变通解决此问题,创建 SQL Server Management Studio 中的在新的查询窗口。 然后,运行 SQL UPDATE 语句更新表中的行。
方法一:
1、单击SQL Server Management Studio工具栏上的“新建查询”按钮,然后按照提示登陆要修改的数据表所在的数据库
2、然后会在数据库的编辑窗口弹出一个可以执行SQL语句的窗口,在该窗口输入以下SQL语句
delete 数据库名.表名 where 要删除的字段名 = '字段值'
例如:delete pyj_db.dbo.Cellphone_related where Cellphone_Num = '111'
方法二:
其实利用INSERT INTO 做一些小的变换,这个问题就可迎刃而解了,具体步骤如下:
先将原用的表做个备份,根据条件将满足条件的数据导到新的表来,再将原表清除,最后将备份表中的数据select过来即可。
第一步:在备份表中导入需要的数据
INSERT INTO DataFile_backup
select * from DataFile where year(consumedate)=条件
第二步:清除原表中的数据
Delete from DataFile
第三步:从备份表中导入数据
select * from DataFile   2019-04-24 14:03:56

 行:deletefromwhere列:updateset=NULL表:droptable   2019-04-24 14:03:56

ask1ask2ask3ask4ask5ask6ask7ask8ask9ask10ask11ask14ask13ask14ask15

热门图文更多>