我想知道在一个表中是否存在一个字段为真的行。
我真的不想获取行,只有存在至少一个是真的。
我试过这个问题:
select ID from Mytable where Exists(select * from MyTable where MyBool = 1);
但我得到的所有字段都是真的。我认为这会占用我需要的更多资源。所以我看起来像那样:
if Exists(select * from MyTablewhere ID = 1
and MyBool= 1)
return 1;
但是我收到一个错误,我无法在此上下文中返回值。
那么,如果有行是真的,有没有办法知道真或假?
非常感谢。
答案 0 :(得分:2)
不是布尔,但会告诉你是或否
select count(*) from MyTable where MyBool = 1
BOOL
select case when count(*) > 1 then 1 else 0 end
from MyTable where MyBool = 1
如果你不需要虚假
select top 1 1
from MyTable where MyBool = 1
答案 1 :(得分:2)
跳过FROM Mytable
:
SELECT 1 WHERE EXISTS (SELECT 1 FROM MyTable WHERE MyBool = 1)
如果1
中至少有一条记录MyTable
,则上述查询将返回单行(MyBool = 1
)。如果不存在这样的记录,它将根本没有行。
答案 2 :(得分:0)
从MyTable中选择前1个ID,其中MyBool = 1