2011-11-10 227 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)'(我的意思是,一般来说)。 –