如何解决仅删除SQL Server上的一条记录
| 假定在sql Server上有一个表EMPLOYEE
带有列ID (int),Name (nvarchar),Surname(nvarchar)
。
这就是您所知道的。您无法在表格内看到数据。
您被命令仅删除名称为\'Alice \'的记录之一。
您将如何编写适当的查询?
解决方法
DELETE TOP (1)
FROM EMPLOYEE
WHERE Name=\'Alice\'
,DELETE TOP (1) FROM EMPLOYEE WHERE Name = \'Alice\'
,在SQL Server中:
DELETE TOP 1 FROM EMPLOYEE WHERE Name = \'Alice\'
,此处建议的所有答案基本上都是相似的,就您介绍问题而言,它们都是最佳的。
但这将迫使您的代码删除Name = \'Alice \'的第一条记录。但是,如果您需要一点点额外的力量来选择要删除的\'Alice \'(如果表中有多个)。但是ID必须是Primary Key
或Unique
SELECT FROM EMPLOYEE ID,Surname WHERE Name = \'Alice\'
这将显示结果,然后您可以获取要删除的目标记录的ID并将其放在以下查询中(假设您要删除的记录的ID为56)
DELETE FROM EMPLOYEE WHERE ID = 56
,declare @Holder table ( EmployeeKey int,Name varchar(24),Surname varchar(24) )
Insert into @Holder ( EmployeeKey,Name,Surname )
select 201,\'Alice\',\'Smith\'
union all select 102,\'Mary\',\'Smith\'
union all select 203,\'Henderson\'
union all select 104,\'John\',\'Smith\'
union all select 105,\'Paul\',\'Johnson\'
union all select 206,\'Jones\'
Delete @Holder
/* Select * ............. while debugging,you can remove the \'Delete @Holder\' and put in a \'Select *\' to see the results (of what ~will be deleted) */
From
@Holder h
join
(select top 1 EmployeeKey from @Holder innerH where Name = \'Alice\' /* order by EmployeeKey DESC */ ) as derived1
on h.EmployeeKey = derived1.EmployeeKey
select * from @Holder order by Name,EmployeeKey
/*
order by EmployeeKey DESC is optional,aka,if you want to \"prefer\" which one gets popped for delete,you can tweak it as needed
*/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。