سؤال

وأنا أتساءل لماذا فشل هذا

mysql> SELECT Continent C, Name, SurfaceArea
    -> FROM Country
    -> WHERE SurfaceArea = (
    -> SELECT MAX(SurfaceArea)
    -> FROM Country
    -> WHERE Continent = C);
ERROR 1054 (42S22): Unknown column 'C' in 'where clause'

في الإجابة التي قدمتها شهادة دليل لبعض عينة التدريبات.

راجع للشغل ، المستعار متى يجب أن تستخدم ؟ اسيت اختياري ؟

هل كانت مفيدة؟

المحلول

من أجل تنفيذ يرتبط الاستعلام الفرعي تحتاج مستعار الخارجي الجدول.يمكنك إنشاء اسم مستعار الخارجي الجدول المجال.نلقي نظرة على تصحيح التعليمات البرمجية أدناه ، الذي لديه اسم مستعار الجدول (وت) المشار إليها في الاستعلام الفرعي (لاحظ أن حقل الاسم المستعار غير مطلوب إذا كنت إزالته.ليس هناك ضرر في إضافة مرة أخرى إذا رغبت في ذلك):

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

بشأن الاستخدام كما انه اختياري.على سبيل المثال ، في الاستعلام أعلاه يمكن أن تكتب Country AS Cou, سيكون نفس.

نصائح أخرى

وأفترض أن لديها ما تفعله مع أنك الخلية الإصدار. لقد اختبرت <م> بالضبط نفس الاستعلام ونجحت (syntaxically على الأقل). ولهذا مع الخلية 5.0.45 .

وإذا كان إصدار MySQL هو ليس المشكلة، ويمكن أيضا محاولة إعادة كتابة الاستعلام. قد يبدو سخيفا ولكن أحيانا <م> فظ حرفا قد تنزلق في الاستعلام الخاص بك أثناء الكتابة أو نسخ / لصق (أنا أفكر نسخ / لصق من PDF هنا، وخاصة، لأنه من الدليل).

و، نعم، AS هو اختياري لأسماء مستعارة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top