是否有可能得到一个bool(true或false)来知道是否存在行?

时间:2015-03-24 16:30:00

标签: sql-server tsql

我想知道在一个表中是否存在一个字段为真的行。

  • 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;

但是我收到一个错误,我无法在此上下文中返回值。

那么,如果有行是真的,有没有办法知道真或假?

非常感谢。

3 个答案:

答案 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