我在SO上看到了很多关于这个的帖子,但是我没有得到答案。 我想查询是否在表中存在特定行。 如果存在,则应该返回一个字符串 true 并停止搜索,如果不存在,则返回false。
我在SO上看到了很多关于这个的帖子,但是我没有得到答案。 我想查询是否在表中存在特定行。 如果存在,则应该返回一个字符串 true 并停止搜索,如果不存在,则返回false。
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
;
case
和exists
的文档,因为这只有对已经了解这些内容的人才有用。 - Tometzky