各位,请教个问题我想写这样一个语句:
select * from user limit (2-1),1;但是 2-1 这种数学算法只能在where里,想在limit里该怎么办?必须是一条语句,不能定义变量或者拆成多条语句来写。是不是要 limit xxx(2-1),1  这样啊  请各位看官指教

解决方案 »

  1.   

    只能用动态语句,
    set @asql=concat('select * from user limit ',2-1,',1');
    prepare stml from @asql;
    execute stml;
      

  2.   

    不能,字符串累加生成SQL语句,再动态执行
      

  3.   

    没有办法,MYSQL中LIMIT后只能是常数不能是变量或者表达式。1) 在MYSQL中生成 concat('select * from user limit ',2-1,',1'); 这样的字符串,然后用 prepare , execute 来执行。
    2)在你的C程序中生成这个SQL语句的字符串,然后直接调用执行。
      

  4.   

    只能用动态sql
    set @sql=CONCAT('select * from user limit',2-1,',1');
    prepare stml from @sql;
    execute stml;
      

  5.   

    mysql limit必须是常量不能是变量或表达式。