2011-11-10 193 views
3

我一直在試圖聲明一個整數變量,但它只是不工作。這裏是我的查詢:無法聲明變量SQL

DECLARE @count INT 
SET  @count = 5633 

SELECT count(matchid) 
FROM `matches` 
WHERE id = @count 

即時得到這個錯誤:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE @count INT 
SET  @count = 5633 

請幫助:)

+0

請記住**接受**您發現最有用的答案。歡迎來到Stackoverflow! –

回答

-1
DECLARE @count INT 
SET  @count = 5633 

SELECT count(matchid) 
FROM matches //<=== should be table name 
WHERE id = @count 
+0

仍然不起作用,問題是當我宣佈計數。 –

+0

@JamesStevenson你錯了。看看答案。我剛剛對它進行了測試,並且在'matches'中出現了另一個錯誤。我也修復了它。 –

+0

沒有那個位工作正常,因爲這個查詢工作SELECT count(matchid) FROM'matches' WHERE id = 5633問題是聲明變量而不是表 –

1
DECLARE @count INT; 
SET  @count = 5633; 

SELECT count(matchid) 
FROM matches 
WHERE id = @count; 

而且,你顯然need一個開始/結束塊。

+1

由於某種原因,這仍然不起作用。它告訴我在'DECLARE @count INT'附近有一個SQL語法錯誤 –

+0

正如上面@Dave所示,你需要用分號';'結束你的語句,我不認爲你需要DECLARE。 –

0

如何做這一切在網上

SELECT 
     count(matchid) 
    FROM 
     `matches`, 
     (select @count := 5633) SQLVars 
    WHERE 
     matches.id = @count 

,但更直接的,否則,只是在用它直接在WHERE子句。

2

根據MySQL manual,DECLARE只允許在BEGIN ... END塊內,並且必須在開始處。你也忘記了每行結尾的分號。這應該適合你:

SET @count = 5633; 

SELECT count(*) 
FROM matches 
WHERE id = @count; 

COUNT(*)在某些情況下速度更快。

+0

這工作非常感謝。 –

+0

'COUNT(*)'可能會更快,但它不同於'COUNT(matchid)'(我的意思是,一般來說)。 –