2017-07-13 35 views
0

我想預先執行查詢,並將結果存儲在@query:鉛與存儲聲明

BEGIN 

DECLARE @query VARCHAR(50); 
SET @table = 'top20-img-link'; 
SET @query = CONCAT('SELECT model FROM ', @table); 
PREPARE stmt FROM @query; 
EXECUTE stmt; 

DROP TABLE IF EXISTS `TABLE1`; 
CREATE TABLE `TABLE1` 
AS (
SELECT *, 
CASE 

WHEN (family1='top20-img-link') THEN @query 
WHEN (family2='top20-img-link') THEN @query2   
WHEN (family2='top20-img-link') THEN @query3 
END prod1 

ETC.

但我在第3行收到語法錯誤消息。我一直無法找到符合我需要的示例,所以請幫助我。

+0

什麼是錯誤信息? – Dai

+0

「您在第3行有語法錯誤」(以'Declare'開頭) – SamanthaAlexandria

回答

0

如果你在變量中使用@,它將在MySQL中作爲用戶定義的變量, 因此,「不需要聲明用戶定義的變量」。請刪除第一行DECLARE @query VARCHAR(50);

當您使用用戶變量,請記住這一點:

對於SET,無論是=:=可以作爲賦值運算符。

您還可以在SET以外的語句中爲用戶變量賦值。在這種情況下,賦值操作符必須是:=而不是=,因爲後者在非SET語句

請參閱此兩個連接作爲比較運營商=處理,以瞭解如何可以用戶Local VariablesUser-Variables在MySQL。

+0

我刪除了'DECLARE @query VARCHAR(50);'但在第一行仍然出現語法錯誤。 – SamanthaAlexandria

+0

請添加完整的查詢相關的創建表,它似乎不完整。你從哪裏得到query1,query2參數?如果您先刪除它,將解決與「聲明」相關的問題。如果您仍然有任何問題,請添加問題描述。所以我們可以更好地瞭解問題。 – Conqueror