我无法在存储过程mysql中进行aritmetic操作

时间:2017-09-13 13:30:55

标签: mysql sql stored-procedures

有一个in参数作为页面。我想要做的就是从中驱逐1并乘以10.但每次都会给我一个错误。

IF !a THEN

  SELECT * 
  from entry 
  WHERE topic_foreign_id = ( 
    select topic_id 
    from topic 
    where topic_name = topicName
  )
  ORDER BY entry_time ASC 
  LIMIT 10 OFFSET page;

ELSE

  SELECT * 
  from entry
  WHERE topic_foreign_id = ( 
    select topic_id 
    from topic 
    where topic_name = topicName
  )
  ORDER BY entry_time ASC;

END IF

这行代码效果很好但是当我想在第一个SQL查询中进行aritmetic操作时,myAdmin每次都会抛出一个错误。

SELECT * 
from entry 
WHERE topic_foreign_id = ( 
  select topic_id 
  from topic 
  where topic_name = topicName
) 
ORDER BY entry_time ASC 
LIMIT 10 OFFSET 10 * ( page - 1); //throws error

1 个答案:

答案 0 :(得分:0)

--- EDITED ---

LIMIT似乎不喜欢计算。尝试使用变量并在存储过程中使用该值

DECLARE v_page_offset INT DEFAULT 0;
SET v_page_offset = 10*(page-1);

之后

LIMIT 10 OFFSET v_page_offset;