select smsId, mtId,taskId, content, userId, orgid, receivetime,  
    mobilephone, destAddr, status 
  from t_websms_receivedsms where 1=1 and userid=1
and status='0'order by receivetime desc 
     limit m,n
这是一条mysql语句,现在要转化成sqlserver语句,做了半天还是没做出来,我知道用select top n * from t_websms_receivedsms  where smsId not in(select top
 m-1  id from t_websms_receivedsms )
可具体怎么去写我还是没写出来
请高手指教.解决的立马一百只要我验证正确就ok.

解决方案 »

  1.   

    问题在limit,这是MySQL的方言。
    SQL Server里面你可以用top.呵呵。千真万确哦。
      

  2.   

    先正向排序取n条,再逆向排序取m条数据就ok了
    --------
    select top m * from 
      (select top n * from t_websms_receivedsms order by receivetime )
    order by receivetime desc
      

  3.   

    我需要把整条sql语句写出来,如果运行ok 一百分就是你的!
      

  4.   

    select top m smsId, mtId,taskId, content, userId, orgid, receivetime, mobilephone, destAddr, status from (select top n * from t_websms_receivedsms where 1=1 and userid=1 and status='0'order by receivetime desc ) order by receivetime 
      

  5.   

    select smsId, mtId,taskId, content, userId, orgid, receivetime,  
        mobilephone, destAddr, status 
      from t_websms_receivedsms where userid=1
    and status='0'
             and eceivetime>=(
                 select top m max(receivetime) where userid=1
            and status='0' order by receivetime desc)
             and eceivetime<=(
                 select top n max(receivetime) where userid=1
            and status='0' order by receivetime desc)
        order by receivetime desc
      

  6.   

    上面代码稍微改一下:
    select smsId, mtId,taskId, content, userId, orgid, receivetime,  
        mobilephone, destAddr, status 
      from t_websms_receivedsms where userid=1
    and status='0'
             and eceivetime>=(
                 select max( select top m receivetime where userid=1
            and status='0' order by receivetime desc))
             and eceivetime<=(
                 select max(top n receivetime where userid=1
            and status='0' order by receivetime desc))
        order by receivetime desc