2

試験の最終日を探すことになっている手順を作成しています。
それで、他のことでもこの日付が必要になるので、このためのローカル変数を作成しました。ただし、このローカル変数の単純な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がプロシージャ内にあると思ったので、そうは思いませんでした。

4

3 に答える 3

1

選択の結果を変数に割り当てていません。

これを行う

select latest_exam = date(max(ex_date))..
于 2012-09-11T03:52:30.253 に答える
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
于 2012-09-11T03:53:41.637 に答える
0

私も同じ問題を抱えていました。プロシージャ内のSELECTINTOクエリではなく(はい、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):「フィールドリスト」の不明な列「データ」

于 2013-10-01T00:36:05.943 に答える