sqlserver 删除不能删除查询出来的top值吗?如下 不能执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver 删除不能删除查询出来的top值吗?如下 不能执行相关的知识,希望对你有一定的参考价值。

delete from (SELECT TOP 1 * FROM table)

参考技术A 当然不能 语法错误 delete删除的是一个真是的表 (SELECT TOP 1 * FROM table)只是一个派生表 实际上并不存在 故不能删 参考技术B sqlserver在delete时,可以指定 top 值,删除指定条数的记录。
--删除tableName表中的钱2条记录,不管查询出来有多少条,只删除前2条
DELETE TOP (2) FROM tableName [WHERE ...]

注:强烈建议在删除数据时,尽量指定top值,这样可以提升性能,并且也可以降低大范围删除。哪怕知道删除的只有一条数据,最好也指定top (1)。
参考技术C 这样的语句本身就有语法错误。修改如下:
delete table
from table a inner join
(select top 1 * from table) b
on a.字段1=b.字段1
and a.字段2=b.字段2
--(如果有多个关键字,都可在这里列出)
参考技术D 可以这样写
假设表名为t_1,其中有字段ID
delete t_1 where ID in (select top 1 ID from t_1 order by ID)
采用标准sql语句,简单明了本回答被提问者采纳

sqlserver 表 无法更新和删除 子查询返回的值不止一个

这是语句
delete from khppzd
where KHPPZD_XTDWBH is null
and KHPPZD_KHMC not like '%非协议%'
and KHPPZD_JS in('1','2')
这是错误提示
消息 512,级别 16,状态 1,过程 khppzd_update,第 19 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
无法删除和更新,select正常,请大神指点

参考技术A 你确定是那个delete的问题吗??
这个delete语句和错误提示的khppzd_update有啥关系?又没有子查询...

应该是其它地方的问题,再检查一下“过程 khppzd_update,第 19 行子查询返回的值不止一个”

祝你成功!

以上是关于sqlserver 删除不能删除查询出来的top值吗?如下 不能执行的主要内容,如果未能解决你的问题,请参考以下文章

SQLserver数据库中所有字段全部一样的重复数据如何删除?

sqlserver 查询多条数据怎么只取一条

sqlserver 表 无法更新和删除 子查询返回的值不止一个

sqlserver 数据有重复怎么删除

sqlserver锁表不能查询吗

sqlserver关于用一个sql语句批量添加数据的问题