2017-06-15 186 views
0

,當我跑在Navicat的EXPLAIN的看法表,無法揣摩出究竟在這個簡短的代碼中的錯誤,我得到這個MySQL錯誤1064:的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 

如果有人能夠幫助我,我將不勝感激。謝謝!

+0

設置前是否有密碼? –

+0

沒有。我正在使用Navicat。 – Cioden

回答

0

變化:

來自:

EXPLAIN SET @runningbal = 0; 

SET @runningbal = 0; 
+0

也會刪除[SQL](如果存在)。 –

+0

其實它的運行沒有解釋。但我只是擔心,當我運行EXPLAIN來檢查查詢的性能時,它會給我提供該消息的錯誤。 – Cioden

+0

這是你的問題,這就是爲什麼我張貼來改變它。 –

0

EXPLAIN statement預計無論是表名或這些類型之一的查詢:

  • 選擇
  • DELETE
  • INSERT
  • 更換
  • UPDATE

它只是沒有設計提供任意的SQL命令的信息(怎麼可能呢?)。

如果您的SQL客戶端是試圖解釋查詢的那個客戶端,則可能需要指示它將腳本代碼處理爲腳本而不是單個語句。

+0

對不起忘了提及我使用VIEWS(虛擬表)而不是DB表本身。話雖如此,你的意思是說EXPLAIN不能在VIEWS表上運行? – Cioden

+0

我不認爲我說...我在說你不能像在'EXPLAIN SET @runningbal = 0;'那樣在隨機代碼片段上運行解釋。 –