2012-09-11 150 views
2

我正在創建一個程序,我應該查找考試的最後日期。
所以我爲此創建了一個局部變量,因爲我在其他事情中也需要這個日期。然而,當我做這個局部變量的一個簡單的SELECT,我得到的消息:「字段列表」mysql:字段列表中的未知列

未知列「last_exam」。

代碼:

DECLARE latest_exam date; 

    SELECT DATE(MAX(ex_date)) 
    INTO latest_exam 
    FROM vets 
    WHERE an_id = p_animal_id 
GROUP BY an_id; 

SELECT latest_exam, and a bunch of other stuff. ; 

在選擇,我需要包括FROM子句?我不這麼認爲,因爲我認爲latest_exam在程序中。

+0

MySQL沒有SELECT INTO查詢。 –

+0

'SELECT INTO'適用於MSSQL而不適用於MySQL –

+0

@JohnWoo:Oracle和PostgreSQL。但與SQL Server不同 –

回答

1

你沒有在變量中分配你選擇的結果。

做這個

select latest_exam = date(max(ex_date)).. 
+0

這工作。謝謝。那太簡單了。 –

+0

@ user1631819如果這個工作正常,那麼勾選它是正確的,所以任何有這個問題的人都知道可以用這個解決問題;) –

1

我覺得CROSS JOIN可以回答你的問題,因爲它產生笛卡爾乘積兩個表。嘗試這個。

SELECT x.maxDate, 
     b.* 
FROM tableName b, 
    (
     SELECT DATE (max(ex_date)) maxDate 
     FROM vets 
     WHERE an_id = p_animal_id 
     GROUP BY an_id 
    ) x 
0

我有同樣的問題;事實證明,這並不是我在程序中的SELECT INTO查詢(其中,是的,是valid in MySQL),而是稍後在該外部程序中調用另一個具有該實際錯誤的程序。

我才發現,這個確認與模擬值的過程中超出了我的詢問之後:

SET @this_RID=0, @this_RANo=0, @this_modpos=0; 

SELECT Response_ID, Response_attempt_No, position, UNCOMPRESS(RAMX.`data`) 
INTO @this_RID, @this_RANo, @this_modpos, @this_XML 
FROM RAMX 
WHERE 
    Response_ID>[email protected]_RID AND Response_attempt_No>[email protected]_RANo AND position>[email protected]_modpos 
    AND (NOT ([email protected]_RID AND [email protected]_RANo AND [email protected]_modpos)) 
    AND module_ID=2 
    AND `data` <> ""  
ORDER BY Response_ID, Response_attempt_No, position 
LIMIT 1; 

SELECT @this_RID, @this_RANo, @this_modpos; 

+-----------+------------+--------------+ 
| @this_RID | @this_RANo | @this_modpos | 
+-----------+------------+--------------+ 
| 451994 |   0 |   1 | 
+-----------+------------+--------------+ 
1 row in set (0.00 sec) 

調用外部程序糾正它調用的過程之前,給這個錯誤:

ERROR 1054(42S22 ):「字段列表」中的未知列「data」

相關問題