IF
не може да се използва в SQL, това е валидно само за PL/pgSQL.
Трябва да направите това с динамичен SQL вътре в анонимен PL/pgSQL блок. Нещо като:
do
$$
declare
l_count integer;
begin
select count(*)
into l_count
from pg_class c
join pg_namespace nsp on c.relnamespace = nsp.oid
where c.relname = 'mytable'
and c.relpersistence = 'u'
and nsp.nspname = 'public';
if l_count = 1 then
execute 'drop table mytable';
end if;
end;
$$
Вероятно трябва да разширите select
израз за присъединяване срещу pg_namespace
и включете името на схемата във вашето условие where, за да сте сигурни, че не изпускате случайно таблица от грешната схема.