УДАЛИТЬ команду с помощью SELECT JOIN - PullRequest
0 голосов
/ 30 декабря 2018

Я попробовал команду удаления ниже, но я не знаю, почему она не работает:

DELETE FROM beteg
WHERE beteg.taj IN ( 
SELECT beteg.taj COUNT (ellatas.id) as "ellátások száma"
FROM ellatas RIGHT JOIN beteg ON ellatas.beteg = beteg.taj
WHERE "ellátások száma" = 0
);

1 Ответ

0 голосов
/ 30 декабря 2018

Я подозреваю, что вы хотите:

delete from beteg
    where not exists (select 1
                      from ellatas e
                      where e.beteg = beteg.taj
                     );

Это удаляет все в beteg, у которого нет соответствующей строки в ellatas.

Ваш запрос имеет несколько проблем:

  • Псевдоним столбца используется в предложении where.
  • Вы используете IN с двумя столбцами в подзапросе и одним во внешнем запросе.
  • Подзапрос не имеет GROUP BY, но использует COUNT().

В любом случае приведенный выше запрос проще и должен иметь лучшую производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...