是否可以通过bool(true或false)来了解行是否存在



我想知道表中是否有一行字段为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

最新更新