DELETE FROM TB WHERE name='33' AND age=33 AND phone=33 AND email='[email protected]'

解决方案 »

  1.   

    你的表目测没有主键,所以最安全的方法是把列名全部写在where条件中,确保“唯一”标识一行
      

  2.   

    如果我加一个id的主键,第一次根据id删除一条记录后,表中的数据就不是按顺序排下来了,也就是说以后再根据id进行删除的话就找不到期望的那一行了,怎么解决这个问题呢?能不能在删除一条记录后,让id这个自增的主键重新生成一次呢?
      

  3.   

    按你的想法:不行,但是自增的ID可以通过truncate table、DBCC 命令来重置。不过这个前提需要把原表的数据搬来搬去。频繁操作的想不现实。问题是为什么你只想删第n行,而不是一个有标识性的id呢?比如表有10行,自增id从1~10,那么你删了第五行,原来的数据是不会变的,新增的数据从11开始。
      

  4.   

    常规的做法是这样:
    1、表有一个自增ID,及对应的数据,ID为主键
    2、前台查询数据,ID也要带出来,但是可以不显示。
    3、前端如果要删除某行数据,代码中就找到对应的ID,然后传入DELETE FROM TB WHERE ID=XXX这个给sqlserver,完成你的操作。其实和重新排序没什么关系啊
      

  5.   


    我想通过前台表格中传来的id值来找到数据表中对应的记录,看来不行的呀看你贴的图,应该是2005以上的版本把,你可以修改你的语句:;with t
    as
    (
    select *,row_number()  over(order by getdate()) id
    from 表
    )
    delete from t where id = 5

      

  6.   


    我想通过前台表格中传来的id值来找到数据表中对应的记录,看来不行的呀看你贴的图,应该是2005以上的版本把,你可以修改你的语句:;with t
    as
    (
    select *,row_number()  over(order by getdate()) id
    from 表
    )
    delete from t where id = 5


    太给力了,谢谢你大神