SQL delete

来源:百度知道 编辑:UC知道 时间:2024/06/05 11:51:18
是这样的,先前测试了这句
delete from admin where id =1 and username=(select top 1 username from admin where id =1) and password= (select top 1 password from admin where id =1)
意思是想删除ID=1的一条记录, 但是DELETE没有TOP 1用法
ID=3 切 username='new' substring(password,len(password),1)='r'
的一条的语句。
你没搞清楚我的意思,我的意思是删除 ID=3且截取password字段最后一个字符为r的一个用户 我这里是删一个所有才有了 top 1来说。

第一句建议分开写,先定义变量(@username 和 @password),将变量赋值后再在delete语句里使用。
非要写在一句里的话,如果是MS SQL SERVER可以用 ROW_NUMBER() 关键字,用法比较复杂,其他数据库不熟悉,其他方法暂没想到。

第二个简单,如果是想删以r为结尾的,可以用like关键字
delete from admin where id=3 and username='new' and password like '%r'

_____________________________________________________________________

我的意思是,把你的那段“select top 1 password from admin where id =1”拉到外面来单独执行,并且定义为变量
完整的做法是:

DECLARE @password varchar

SET @password = select top 1 username from admin where id =3 and username='new' and password like '%r'

delete from admin where id=3 and username='new' and password = @password

但是注意一点,对于两条完全一样的数据,只能一起删除。
数据库不支持单独删除多条一模一样的数据中的一条,至少MS SQL SERVER是这样。
如果实在要只删一条,可以先计算目标数据的行数,全部删除后再重新插入多删掉的

如果是两行一摸一样的记录,想删除其中一行
换个思路试试
先用 SELECT DISTINCT 字段 into #temp
然后 DELETE 掉原表
然后 insert 原表 select #temp表 就ok

条件带入方式楼上各位都处理