select top 3 * from news where id not in(select top (1*3) id from news)
这句执行 就会服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: '(' 附近有语法错误。
select top 3*1 * from news
这句执行服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: '1' 附近有语法错误。
我就想要得到两个数相乘的结果,怎么写啊

解决方案 »

  1.   

    我用的就是2000 怎么改成动态语句?
    CREATE PROCEDURE  select_AllNews
    @pageindex int,
    @pagesize int
     AS
    select top @pagesize * from news where id not in(select top (@pageindex-1)*@pagesize id from news)
    我这样写的存储过程 也是不对!
      

  2.   

    CREATE PROCEDURE select_AllNews
    @pageindex int,
    @pagesize int
     AS
    declare @sql varchar(8000)
    set @sql=
    'select top '+ltrim(@pagesize)+' * from news where id not in(select top ('+ltrim(@pageindex-1)*@pagesize)+' id from news)'
    exec (@sql)go
      

  3.   

    --SQL 2008 动态前N列
    declare @n int 
    set @n = 3  
    select TOP(@n) * from @te  
      

  4.   


    sql2000 top后面不能跟变量或者表达式,只能跟常量整数
      

  5.   

    不好意思,写漏了一个括号
    CREATE PROCEDURE select_AllNews
    @pageindex int,
    @pagesize int
     AS
    declare @sql varchar(8000)
    set @sql=
    'select top '+ltrim(@pagesize)+' * from news where id not in(select top ('+ltrim((@pageindex-1)*@pagesize)+' id from news)'
    exec (@sql)go