我想知道表中是否有一行字段为true。
- MyTable(ID、MyBool…)
真的,我不想得到这些行,只要至少有一行是真的。
我尝试过这个查询:
select ID from Mytable where Exists(select * from MyTable where MyBool = 1);
但我得到了所有的一行,哪个字段是真的。我认为这使用了我需要的更多资源。所以我看起来是这样的:
if Exists(select * from MyTablewhere ID = 1
and MyBool= 1)
return 1;
但是我得到了一个错误,在这种情况下我不能返回值。
那么,有没有什么方法可以用真或假来知道是否有行是真的?
非常感谢。
只需跳过FROM Mytable
:
SELECT 1 WHERE EXISTS (SELECT 1 FROM MyTable WHERE MyBool = 1)
如果MyTable
中至少有一条记录为MyBool = 1
,则上述查询将返回单行(1
)。如果不存在这样的记录,它将根本没有行。
不是bool,但会告诉你是或否
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
从MyTable中选择前1个ID,其中MyBool=1