2012-09-11 102 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”

相关问题