Sql,如果其他表达式为true,则执行一个表达式

时间:2015-11-19 08:22:43

标签: sql sql-server if-statement

我需要调用我的数据库来查看是否存在parentId = 30的任何用户。 如果有,我想做一个表达。如果没有,我想做另一个。

有时像下面这样。请注意,这只是一个示例,用于解释我想要做的事情。

Select count(*) as Users from user where parentID = 30
When Users > 0
     Select * from user where parentID = 30
else
     Select * from user

希望问题得到妥善解释。

1 个答案:

答案 0 :(得分:1)

这应该有效:

Select * from tbl 
where parentID = 30 
or ((select count(*) as Users from tbl where parentID = 30) <= 0)

parentid为30并且仅检索该记录,或者没有具有该parentid的记录,因此检索所有记录。请注意,这将适用于SQL Server,Oracle和MySQL。

注意:这是有效的,因为示例中的两个查询都返回相同的列。您需要指定是否期望每个查询中的不同列供实际使用。

Demo

更新:由于您使用的是SQL Server,因此您只需将计数存储在变量中,并使用if-else来决定运行哪个查询,而不管查询是什么,如下所示:

declare @count int = 0

select @count = count(*) from user where parentid = 30

if @count > 0
 begin
  select * from user where parentid = 30
 end
else
 begin
  select * from user
 end

Demo