【问题标题】:mysql: Unknown column in field listmysql:字段列表中的未知列
【发布时间】:2012-09-11 03:50:10
【问题描述】:

我正在创建一个程序,我应该在其中查找考试的最后日期。
所以我为此创建了一个局部变量,因为我在其他事情上也需要这个日期。但是,当我对此局部变量执行简单的 SELECT 时,会收到以下消息:

“字段列表”中的未知列“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 在程序内。

【问题讨论】:

  • MySQL 没有SELECT INTO 查询。
  • SELECT INTO 用于 MSSQL 而不是 MySQL
  • @JohnWoo:Oracle 和 PostgreSQL。但不同于 SQL Server
  • 错误消息中提到了last_exam,但它从未出现在您的 SQL 中的任何位置。有些东西你没有向我们展示(也许它在“一堆其他东西”中)。还是latest_examlast_exam 的错字?

标签: mysql sql mysql-error-1054


【解决方案1】:

您没有在变量中分配选择的结果。

这样做

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

【讨论】:

  • @user1631819 如果这有效,则将其勾选为正确,因此任何有此问题的人都知道可以解决此问题;)
【解决方案2】:

我认为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

【讨论】:

    【解决方案3】:

    我遇到了同样的问题;结果不是我在过程中的 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>=@this_RID AND Response_attempt_No>=@this_RANo AND position>=@this_modpos 
        AND (NOT (Response_ID=@this_RID AND Response_attempt_No=@this_RANo AND position=@this_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)
    

    调用外部过程在纠正它调用的过程之前给出了这个错误:

    错误 1054 (42S22):“字段列表”中的未知列“数据”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-01
      • 2019-10-02
      相关资源
      最近更新 更多