خطأ Postgres "إدخال جملة FROM مفقود" عند الاستعلام باستخدام عبارة "With".

StackOverflow https://stackoverflow.com//questions/9643859

  •  10-12-2019
  •  | 
  •  

سؤال

أحاول استخدام هذا الاستعلام في Postgres 9.1.3:

WITH stops AS (
    SELECT citation_id,
           rank() OVER (ORDER BY offense_timestamp,
                     defendant_dl,
                     offense_street_number,
                     offense_street_name) AS stop
    FROM   consistent.master
    WHERE  citing_jurisdiction=1
)

UPDATE consistent.master
SET arrest_id = stops.stop
WHERE citing_jurisdiction=1
  AND stops.citation_id = consistent.master.citation_id;

أحصل على هذا الخطأ:

ERROR:  missing FROM-clause entry for table "stops"
LINE 12: SET arrest_id = stops.stop
                         ^

********** Error **********

ERROR: missing FROM-clause entry for table "stops"
SQL state: 42P01
Character: 280

انا حقا مرتبك.تظهر جملة YOU صحيحة وفقًا لوثائق Postgres.إذا قمت بتشغيل الاستعلام بشكل منفصل في جملة YOU، سأحصل على النتائج الصحيحة.

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

المحلول

من دليل جيد:

هناك طريقتان لتعديل جدول باستخدام المعلومات الموجودة في جداول أخرى في قاعدة البيانات:باستخدام التحديدات الفرعية، أو تحديد جداول إضافية في FROM بند.

لذلك تحتاج فقط إلى جملة FROM:

WITH stops AS (
    -- ...
)
UPDATE consistent.master
SET arrest_id = stops.stop
FROM stops -- <----------------------------- You missed this
WHERE citing_jurisdiction=1
  AND stops.citation_id = consistent.master.citation_id;

حتى أن رسالة الخطأ تقول نفس القدر:

خطأ:إدخال جملة FROM مفقود للجدول "توقف"

نصائح أخرى

يمكن أن يحدث هذا أيضًا إذا أخطأت في كتابة اسم الجدول.على سبيل المثال:

UPDATE profiles SET name = ( profile.first_name ) WHERE id = 1

بدلاً من profiles لقد استخدمت بشكل غير صحيح profile !!هذا من شأنه أن يعمل:

UPDATE profiles SET name = ( profiles.first_name ) WHERE id = 1
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top