首页 > 解决方案 > 如何在 sql 查询的输出上添加过滤器以获得布尔值的答案?

问题描述

我有一张表,其中提到了 id 和该 id 的值。

id  | value
101 | admin
102 | user
103 | test
104 | admin
105 | basic

我得到 2 个 id 的输入。现在,我必须检查这两个 id 是否具有相等的值?此 id 字段是其他表中的外键。

到目前为止,我试过这个:select id, value from roles where id in('101', '104')

但我希望输出为 - 不等于或等于或仅在相等时返回某个值,如果不相等则为空输出。

注意:值永远不会为空

我正在使用 oracle 12 和 node.js。

标签: sqlnode.jsoracle

解决方案


这是一种方法。

select case when min(value) = max(value) then 'equal' else 'not equal' end
       as compare_values
from   roles
where  id in ('101', '104')
;

即使您传递了三个或更多 id,这也有效 - 它只是告诉您所有值(对于所有 id)是否相等。

请注意,如果value可以(null说实际数据中并非如此),则这些值将被忽略;如果所有非值都相等,则查询将返回。null'equal'null


推荐阅读