База данных 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')
Комментариев нет:
Отправить комментарий