无法声明变量SQL

7

我一直在尝试声明一个整数变量,但是它就是不起作用。这是我的查询:

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

请帮忙:)

请记得接受您认为最有用的答案。欢迎来到Stackoverflow! - Gustav Bertram
4个回答

7
根据MySQL手册,DECLARE只允许在BEGIN ... END块内使用,并且必须位于开头。您还忘记了每行末尾的分号。以下内容适用于您:
SET @count = 5633;

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

COUNT(*) 在某些情况下更快。


1
COUNT(*) 可能更快,但与 COUNT(matchid) 不完全相同(我是指一般情况下)。 - Andriy M

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

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

此外,你显然需要一个开始/结束块。


1
由于某些原因,这仍然无法正常工作。它告诉我在“DECLARE @count INT”附近有一个SQL语法错误。 - James Stevenson
正如 @Dave 上面所展示的,你需要用分号 ; 结束语句,而且我认为你不需要使用 DECLARE。 - Gustav Bertram

0

要不要全部都在一行中完成呢?

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

但更直接的方式,否则就直接将它放在WHERE子句中。


-1
DECLARE @count INT
SET     @count = 5633

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

@JamesStevenson,你错了。看看答案。我刚刚测试过了,你在'matches'上还有另一个错误。我也已经修复了它。 - Royi Namir
不,那一部分没问题,因为这个查询是有效的:SELECT count(matchid) FROM matches WHERE id = 5633 问题出在变量声明上,而不是表格。 - James Stevenson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接