我想删除user_info  表中的 要求isonline=0 并且 按user_id降序排列的行 还有最多删除50行例如:
   isonline            user_id
       0                       100
       0                         99
        .                          .
        .                          .
        .                          .
       0                        50      //要求删除这以上的数据行  (此例特殊,可能user_id并没有按降序排序)
       0                        49
        .                          .
        .                          .
        .                          .
这样写对吗?
delete from user_info where isonline=0 and order by user_id DESC limit 0,50

解决方案 »

  1.   

    你的是mysql写法吧
    delete from user_info where user_id in (select top 50 user_id from user_info order by user_id desc)
      

  2.   

    觉着如果userid是连续性的直接where isonline=0 and userid>50
      

  3.   

    ;with cte as
    (
       select top(50)* from user_info where isonline=0 order by user_id desc
    )
    delete from cte 
      

  4.   

    delete from user_info where user_id in (select top 50 user_id from user_info where isinline=0 order by user_id desc)