Страницы

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

пятница, 14 февраля 2020 г.

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

#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"; фиддл

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

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