【问题标题】:Return 1 if number exists in table and 0 otherwise如果表中存在数字,则返回 1,否则返回 0
【发布时间】:2015-01-18 15:39:10
【问题描述】:

如果表中已经存在某个数字,我想返回 1,否则返回 0。

我尝试了一些方法,但它不起作用:

select
case when 100 in (select distinct id from test) then '1'
else '0'
from test

我想要类似于 PostgreSQL 中已经存在的 exists 函数,但不是 truefalse 我想要 10

【问题讨论】:

标签: sql postgresql boolean exists


【解决方案1】:

EXISTS 产生boolean 结果。
实现您所要求的简单方法是将结果转换integer

SELECT (EXISTS (SELECT FROM test WHERE id = 100))::int;

TRUE1
FALSE0

UNION ALL / LIMIT 1(可能稍微快一点):

SELECT 1 FROM test WHERE id = 100
UNION  ALL
SELECT 0
LIMIT  1;

如果找到一行,则返回1,并且由于LIMIT 1,Postgres 停止执行。
否则返回0

见:

【讨论】:

    【解决方案2】:

    如果您正在测试的字段是主键(或其他一些唯一约束),那么您可以简单地返回计数(始终为 0 或 1):

    SELECT count(*) FROM test WHERE id = 100;
    

    【讨论】:

      【解决方案3】:

      简单快捷:

      SELECT ISNULL((SELECT 1 FROM test WHERE id = 100), 0) res
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-14
        • 1970-01-01
        • 1970-01-01
        • 2021-11-19
        • 1970-01-01
        • 2022-10-14
        • 2019-05-23
        • 2019-03-18
        相关资源
        最近更新 更多