日期:2014-05-17  浏览次数:20804 次

删除选中的记录,如何写呀?


如图片所示,假设有上图所示的,即从数据库里取的每条记录内容都一样
在界面上选择后,从界面删除,直接删除就可以了,但是

在数据库里也存储了相同的内容,也就说有很多行内容都相同的记录,共3个字段,而这三个字段内容都一样。

如何在删除界面上记录的同时,对应的数据库里也删除掉该记录呢?


------解决方案--------------------
给数据库表加个自增列id作为主键
delete from tb where id=所选行的id
------解决方案--------------------
借助一个临时表.

select distinct userid,username,useage into tmp from tb
truncate table tb
insert into tb select * from tmp
drop table tmp
------解决方案--------------------
1. 虽然页面显示一样的数据,后台表里应该有个主键列的吧?
delete t where 主键列 = ...

2. 如果真的没主键,那就自己编个号了,示例如下:

create table aaa
(
code varchar(100)
)

insert into aaa values('aaa')
insert into aaa values('aaa')
insert into aaa values('aaa')

with t 
as
(
select row_number() over(order by code) as num,* from aaa
)
delete t where num = 1
select * from aaa

------解决方案--------------------
SELECT DISTINCT  * INTO #t 
FROM TB
go

TRUNCATE TABLE TB
go

INSERT INTO TB
SELECT * FROM #t
go

DROP TABLE #t

------解决方案--------------------

;with tb as (
 select  ROW_NUMBER() over  (order by userid) as index,*from userinfo
)
delete from tb where index= 1
------解决方案--------------------
。。。那个index是关键字。。我是直接在留言板上写的。。。你整个选中 一起执行 不会报错,sql2005或以上
------解决方案--------------------
;with raifu1 as (            --------------修改成raifu1
select  ROW_NUMBER() over  (order by id) as index1,*from ruifu
)
delete from raifu1 where index1= 1   --------------修改成raifu1

你把整个选中(从;with到 最后),在执行