【问题标题】:Cant declare variable SQL无法声明变量 SQL
【发布时间】:2011-12-26 04:32:59
【问题描述】:

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

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!

标签: mysql sql variables declare


【解决方案1】:

根据MySQL manual,DECLARE 只允许在 BEGIN ... END 块内,并且必须在开头。您还忘记了每行末尾的分号。这应该适合你:

SET @count = 5633;

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

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

【讨论】:

  • COUNT(*) 可能更快,但它与COUNT(matchid) 不同(我的意思是,一般来说)。
【解决方案2】:
DECLARE @count INT;
SET     @count = 5633;

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

另外,你显然是 need 一个开始/结束块。

【讨论】:

  • 由于某种原因仍然无法正常工作。它告诉我“DECLARE @count INT”附近有一个 SQL 语法错误
  • 如上面@Dave 所示,您需要以分号; 结束您的语句,我认为您不需要声明。
【解决方案3】:

如何在线完成所有操作

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

但更直接的方法是,直接在 WHERE 子句中。

【讨论】:

    【解决方案4】:
    DECLARE @count INT
    SET     @count = 5633
    
    SELECT count(matchid) 
    FROM    matches  //<===  should be table name
    WHERE   id = @count
    

    【讨论】:

    • @JamesStevenson 你错了。看答案。我刚刚对其进行了测试,但 'matches' 出现了另一个错误。我也修好了。
    • 没有那个位工作正常,因为这个查询工作 SELECT count(matchid) FROM matches WHERE id = 5633 问题在于声明变量而不是表
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 2012-03-13
    • 2015-05-04
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    相关资源
    最近更新 更多