なぜこれが失敗するのか疑問に思っています
mysql> 大陸 C、名前、表面積を選択 -> 国から -> WHERE 表面積 = ( -> SELECT MAX(SurfaceArea) -> 国から -> WHERE 大陸 = C); エラー 1054 (42S22): 'where 句' の列 'C' が不明です
その答えは、いくつかのサンプル演習の認定ガイドによって提供されます。
ところで、エイリアスの場合、いつ AS を使用する必要がありますか? オプションですか?
なぜこれが失敗するのか疑問に思っています
mysql> 大陸 C、名前、表面積を選択 -> 国から -> WHERE 表面積 = ( -> SELECT MAX(SurfaceArea) -> 国から -> WHERE 大陸 = C); エラー 1054 (42S22): 'where 句' の列 'C' が不明です
その答えは、いくつかのサンプル演習の認定ガイドによって提供されます。
ところで、エイリアスの場合、いつ AS を使用する必要がありますか? オプションですか?
相関サブクエリを実行するには、外部テーブルのエイリアスが必要です。外部テーブルのフィールドのエイリアスを作成しました。以下の修正されたコードを見てください。サブクエリで参照されるテーブル (Cou) のエイリアスがあります (フィールド エイリアスは必須ではないので削除したことに注意してください。必要に応じて追加し直しても害はありません)。 :
SELECT Continent, Name, SurfaceArea
FROM Country Cou
WHERE SurfaceArea =
(
SELECT MAX(SurfaceArea)
FROM Country
WHERE Continent = Cou.Continent
);
AS の使用に関しては、オプションです。たとえば、上記のクエリでは、次のように記述できますCountry AS Cou
が、同じです。
MySQLのバージョンと関係があると思います。まったく同じクエリをテストしたところ、成功しました(少なくとも構文的には)。それはMySQL 5.0.45です。
MySQL のバージョンが問題でない場合は、クエリを再入力してみてください。ばかげているように聞こえるかもしれませんが、入力またはコピー/貼り付け中に、印刷できない文字がクエリに表示されることがあります (特に、ガイドからのものであるため、ここでは PDF からコピー/貼り付けを考えています)。
そして、はい、AS
エイリアスのオプションです。