如图片所示,假设有上图所示的,即从数据库里取的每条记录内容都一样
在界面上选择后,从界面删除,直接删除就可以了,但是在数据库里也存储了相同的内容,也就说有很多行内容都相同的记录,共3个字段,而这三个字段内容都一样。如何在删除界面上记录的同时,对应的数据库里也删除掉该记录呢?

解决方案 »

  1.   

    给数据库表加个自增列id作为主键
    delete from tb where id=所选行的id
      

  2.   

    借助一个临时表.select distinct userid,username,useage into tmp from tb
    truncate table tb
    insert into tb select * from tmp
    drop table tmp
      

  3.   

    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
      

  4.   

    不行的,sql执行后,内容相同的行都会被删掉。
      

  5.   

    用upset tablename 
    set 记录 = null
    where 条件
      

  6.   

    最近闲的慌 
    玩玩数据库,三个列是没有主键不过用 select * from raifu在ID 列前面,是有个数值自动累计向上加的 号,,可以借助这个么?
      

  7.   

    还是在表里加个自增列吧,或者用row_number
      

  8.   

    sql语句怎么写? 删除记录时,以 自增列值作为条件, where 后面咋写? 谢谢
      

  9.   

    SELECT DISTINCT  * INTO #t 
    FROM TB
    goTRUNCATE TABLE TB
    goINSERT INTO TB
    SELECT * FROM #t
    goDROP TABLE #t
      

  10.   


    ;with tb as (
     select  ROW_NUMBER() over  (order by userid) as index,*from userinfo
    )
    delete from tb where index= 1
      

  11.   

    照着模仿了一下,,报错呀,,表raifu ,放在数据库 tempdb数据库中
    ;with raifu as (
    select  ROW_NUMBER() over  (order by id) as index,*from ruifu
    )
    delete from raifu where index= 1错误提示如下消息 1018,级别 15,状态 1,第 9 行
    'index' 附近有语法错误。如果它要作为表提示的一部分,则必须有 WITH 关键字和圆括号。有关正确的语法,请参阅 SQL Server 联机丛书。
    消息 1018,级别 15,状态 1,第 11 行
    'index' 附近有语法错误。如果它要作为表提示的一部分,则必须有 WITH 关键字和圆括号。有关正确的语法,请参阅 SQL Server 联机丛书。
      

  12.   

    那个index是关键字。。我是直接在留言板上写的你整个选中 一起执行 不会报错,sql2005或以上
      

  13.   

    ;with raifu1 as (            --------------修改成raifu1
    select  ROW_NUMBER() over  (order by id) as index1,*from ruifu
    )
    delete from raifu1 where index1= 1   --------------修改成raifu1你把整个选中(从;with到 最后),在执行