【问题标题】:MySQL [Error] 1064MySQL [错误] 1064
【发布时间】:2017-06-15 09:45:45
【问题描述】:

当我在 Navicat 的 VIEWS 表上运行 EXPLAIN 时,我得到了这个 MySQL 错误 1064,并且无法弄清楚这个简短代码中的错误究竟来自哪里:

SET @runningbal = 0;
SELECT
cashinflow_v.TxnDate,
cashinflow_v.TxnType,
cashinflow_v.Amount,    
@runningbal := @runningbal + cashinflow_v.Amount as Balance
FROM
cashinflow_v
ORDER BY cashinflow_v.TxnDate

错误提示:

[SQL] EXPLAIN SET @runningbal = 0;
SELECT
cashinflow_v.TxnDate,
cashinflow_v.TxnType,
cashinflow_v.Amount,
@runningbal := @runningbal + cashinflow_v.Amount as Balance
FROM
cashinflow_v
ORDER BY cashinflow_v.TxnDate

[Err] 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 'SET 
@runningbal = 0;
SELECT
cashinflow_v.TxnDate,
cashinflow_v.TxnType,
cash' at line 1

如果有人可以帮助我,我将不胜感激。谢谢!

【问题讨论】:

  • 设置前有密码吗?
  • 实际上没有。我正在使用 Navicat。

标签: mysql explain navicat


【解决方案1】:

变化:

来自:

EXPLAIN SET @runningbal = 0;

 SET @runningbal = 0;

【讨论】:

  • 如果存在 [SQL] 也会删除。
  • 实际上它在没有解释的情况下运行。但我只是担心,当我运行 EXPLAIN 来检查查询的性能时,它会给我那个消息错误。
  • 这是您的问题,这就是我发布更改它的原因。
  • 谢谢。很好的帮助!
【解决方案2】:

EXPLAIN statement 需要表名或以下类型之一的查询:

  • 选择
  • 删除
  • 插入
  • 替换
  • 更新

它的设计目的不是提供任意 SQL 命令的信息(怎么可能?)。

如果是您的 SQL 客户端试图解释查询,您可能需要指示它将代码块作为脚本而不是单独的语句来处理。

【讨论】:

  • 抱歉忘了提及我使用的是 VIEWS(虚拟表)而不是 DB 表本身。话虽如此,您的意思是 EXPLAIN 不能在 VIEWS 表上运行?
  • 我不认为我是在说...我是说你不能像EXPLAIN SET @runningbal = 0; 那样对随机代码 sn-ps 运行解释。
猜你喜欢
  • 2011-02-11
  • 2015-07-03
  • 2012-01-27
  • 2011-04-17
  • 2014-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多