Страницы

Поиск по вопросам

среда, 24 апреля 2019 г.

sql запрос на удаление

База данных 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


Ответ

У 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')

Комментариев нет:

Отправить комментарий