2014-09-25 45 views
1

我有錯誤在我的語法:MySQL的限制與可變

SET @start := 0; 
SELECT (ROUND((count(item))/2)) FROM car INTO @until; 
SELECT * from car limit @until OFFSET @start; 

你有一個錯誤的SQL語法;檢查對應於您的MySQL服務器版本的手冊,在第1行使用'@until OFFSET @start'附近的正確語法。

任何人都可以幫助我? 感謝

回答

0

不能在LIMIT子句中使用用戶指定的變量(@until)。

一種可能的方案(關於this的變化):

SELECT (ROUND((count(item))/2)) FROM car INTO @until; 
SELECT * FROM (
    SELECT *, 
     @rownum := @rownum + 1 AS rank 
    FROM car, 
     (SELECT @rownum := 0) r 
) d WHERE rank < @until; 

唯一的缺點是你丟失了偏移,但可以容納,通過調節WHERE子句。否則,您可以使用存儲過程。

+0

[錯誤] 1064 - 您的SQL語法錯誤;請檢查與您的MySQL服務器版本相對應的手冊,以便在第1行':= @until'附近使用正確的語法 – empugandring 2014-09-25 08:44:04

+0

廢棄這個問題,問題在於您使用帶有LIMIT的變量。看來你不能在那裏使用它:http://stackoverflow.com/questions/245180/variable-limit-clause-in-mysql。我會用可能的解決方案更新我的答案。 – kasimir 2014-09-25 09:56:17