Я видел много сообщений об этом в SO. Но я не мог получить ответ. Я хочу, чтобы запрос проверял, существует ли определенная строка в таблице. Если он существует, он должен вернуть мне строку true и остановить поиск там сам, а если не вернуть false.Проверьте, существует ли строка в postgresql
ответ
select
case when exists (select true from table_name where table_column=?)
then 'true'
else 'false'
end;
Но было бы лучше просто вернуться булево вместо строки:
select exists (select true from table_name where table_column=?);
Спойлер:
-- EXPLAIN ANALYZE
WITH magic AS (
WITH lousy AS (SELECT * FROM one WHERE num = -1)
SELECT 'True'::text AS truth
WHERE EXISTS (SELECT * FROM lousy)
UNION ALL
SELECT 'False'::text AS truth
WHERE NOT EXISTS (SELECT * FROM lousy)
)
SELECT *
FROM magic
;
Это слишком сложно. – Tometzky
Он был предназначен как спойлер. ОП определенно является домашним заданием и не прикладывает никаких усилий. – wildplasser
То, что вы написали, это тарабарщина даже для меня. Вы не учите, предоставляя преднамеренно запутанный пример, который работает, но [The Daily WTF] (http://thedailywtf.com/) достойный. Например, вы можете указать документацию «case» и «exists», поскольку она полезна только для тех, кто знает, что искать. – Tometzky
Существует запятая отсутствует в запросе. – wildplasser
Что вы пробовали? Как указать строку? По rowid или значениям всех атрибутов? Должен ли он быть запросом или же PL/SQL-функция приемлема? – toniedzwiedz