#sql #postgresql
База данных postgreSQL , есть две таблицы , "groups" (group_id (pk), name) - 6 строк и "students" (student_id(pk), group_id, first_name, last_name) - 43 строки. Как удалить строки из таблицы "students" по конкретному названию (groups.name) из таблицы "groups" На вот такой запрос DELETE FROM public."GROUPS", public."STUDENTS" WHERE "GROUPS"."GROUP_ID" = "STUDENTS"."GROUP_ID" AND "GROUPS"."NAME" = "SR-01"; пишет ошибка синтаксиса (примерное положение: ",") на вот такой запрос DELETE FROM public."STUDENTS" WHERE "GROUPS"."GROUP_ID" = "STUDENTS"."GROUP_ID" AND "GROUPS"."NAME" = "SR-01"; пишет таблица "GROUPS" отсутствует в предложении FROM
Ответы
Ответ 1
У PostgreSQL довольно забавный синтаксис удаления с использованием ключевого слова USING: DELETE FROM public."STUDENTS" USING public."GROUPS" WHERE "GROUPS"."GROUP_ID" = "STUDENTS"."GROUP_ID" AND "GROUPS"."NAME" = 'SR-01' В крайнем случае всегда можно использовать старые, добрые подзапросы: DELETE FROM public."STUDENTS" WHERE "STUDENTS"."GROUP_ID" IN(SELECT "GROUP_ID" FROM public."GROUPS" WHERE "NAME" = 'SR-01')Ответ 2
DELETE FROM public."STUDENTS" using public."groups" WHERE "GROUPS"."GROUP_ID" = "STUDENTS"."GROUP_ID" AND "GROUPS"."NAME" = "SR-01"; фиддл
Комментариев нет:
Отправить комментарий