2011-05-03 20 views
6

偏移動態此代碼不能正常工作如何使限制只使用(我的)SQL

select pagenr into @offset from pages where id = 3; 
select * from table1 limit @offset*10, 10; 

什麼SQLCODE我需要爲了使用來獲得這種代碼只使用工作
SQL!

注意

SET SQL_SELECT_LIMIT = @count 

不工作,因爲我主要關注的偏移量,而不是限制這樣。

回答

4

從MySQL的5.5規格:

LIMIT子句可以用來限制 行數由SELECT語句返回 。 LIMIT需要 一個或兩個數字參數,這 必須都是非負整數 常量,但以下情況除外:

  • 在準備語句,LIMIT參數可以通過? 佔位符標記來指定。
  • 在存儲的程序中,LIMIT參數可以使用 整數值例程參數或從MySQL 5.5.6開始的局部變量指定。

所以,在存儲過程中,下面的工作:

DECLARE offset bigint 
SELECT pagenr * 10 INTO offset FROM pages where id = 3; 
SELECT * FROM table1 LIMIT offset, 10; 

否則,你將需要預先計算的值,並在通過查詢傳遞。你應該已經知道頁面大小和頁碼,所以這應該不難。

+0

是不是@變量會話變量? – peufeu 2011-05-03 18:13:05

+0

@peufeu,@variables是的,但Kazelzarath沒有使用@variables。 – Johan 2011-05-03 21:16:41

+0

啊,他編輯@出! – peufeu 2011-05-03 21:52:31

相關問題