خطأ Postgres "إدخال جملة FROM مفقود" عند الاستعلام باستخدام عبارة "With".
-
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
لا تنتمي إلى StackOverflow