3

なぜこれが失敗するのか疑問に思っています

mysql> 大陸 C、名前、表面積を選択
    -> 国から
    -> WHERE 表面積 = (
    -> SELECT MAX(SurfaceArea)
    -> 国から
    -> WHERE 大陸 = C);
エラー 1054 (42S22): 'where 句' の列 'C' が不明です

その答えは、いくつかのサンプル演習の認定ガイドによって提供されます。

ところで、エイリアスの場合、いつ AS を使用する必要がありますか? オプションですか?

4

2 に答える 2

8

相関サブクエリを実行するには、外部テーブルのエイリアスが必要です。外部テーブルのフィールドのエイリアスを作成しました。以下の修正されたコードを見てください。サブクエリで参照されるテーブル (Cou) のエイリアスがあります (フィールド エイリアスは必須ではないので削除したことに注意してください。必要に応じて追加し直しても害はありません)。 :

SELECT Continent, Name, SurfaceArea
FROM Country Cou
WHERE SurfaceArea = 
(
    SELECT MAX(SurfaceArea)
    FROM Country
    WHERE Continent = Cou.Continent
);

AS の使用に関しては、オプションです。たとえば、上記のクエリでは、次のように記述できますCountry AS Couが、同じです。

于 2009-09-10T03:53:18.143 に答える
0

MySQLのバージョンと関係があると思います。まったく同じクエリをテストしたところ、成功しました(少なくとも構文的には)。それはMySQL 5.0.45です。

MySQL のバージョンが問題でない場合は、クエリを再入力してみてください。ばかげているように聞こえるかもしれませんが、入力またはコピー/貼り付け中に、印刷できない文字がクエリに表示されることがあります (特に、ガイドからのものであるため、ここでは PDF からコピー/貼り付けを考えています)。

そして、はい、ASエイリアスのオプションです。

于 2009-09-10T04:07:23.007 に答える