sql中的if else条件[重复]

Posted

技术标签:

【中文标题】sql中的if else条件[重复]【英文标题】:if else condition in sql [duplicate] 【发布时间】:2016-04-09 10:44:24 【问题描述】:

我想写一个 sql 查询:

if这个查询(select X from table1 where x = 'value1')有结果返回1 else if (select x from table2 where x = 'value2')有任何结果返回2否则返回0。

谢谢

【问题讨论】:

将您关于在 C# 中读取数据集的问题作为单独的问题发布。或者,更合适的是,搜索已经涵盖的众多现有答案和网站。 @Yuck 好的,我会编辑我的问题,谢谢 【参考方案1】:

一种方法是selectcase

select (case when exists (select X from table1 where x = 'value1')
             then 1
             when exists (select x from table2 where x = 'value2')
             then 2
             else 0
        end) as flag

【讨论】:

谢谢,但我怎样才能从 c# 中读取 'Then' 部分?我怎样才能访问它? 假设您想从 C# 执行查询 select 1;。你知道怎么做吗?如果你这样做了,那么你也知道如何从 C# 运行 Gordon 的查询。它使用case 的事实是无关紧要的;它们都只是返回单个整数的查询。如果您不这样做,那么您应该查找有关 C# 中数据库访问的教程。【参考方案2】:

是否可以用变量来实现:

DECLARE @FLAG INT = 0;

SELECT @FLAG = 1 FROM table1 WHERE x = 'value1'

IF @FLAG = 0 
BEGIN
    SELECT @FLAG = 2 FROM table2 WHERE x = 'value2'
END

SELECT @FLAG

@FLAG 变量将保存值 0、1 或 2,因为表包含或不包含数据。如果第一个选择不包含数据,则运行第二个,如果没有返回数据,则返回 0(默认 @FLAG 值)。

【讨论】:

【参考方案3】:

这应该可以工作,尽管它不是一个有效的查询,也不是使用这样的查询的最佳实践。

select 
    case when exists (select X from table1 where x = 'value1') then 1 
    when exists (select x from table2 where x = 'value2') then 2 
    else 0 
end;

【讨论】:

【参考方案4】:

当查询很短时,选择案例是解决这种情况的更好方法。但是当查询又长又复杂时,我喜欢使用用户定义的函数,例如:

如果 dbo.QueryExecution() 为空 - 做一点事 别的 --做点什么

并且 dbo.QueryExecution() 可以执行您的查询 从 table1 中选择 X,其中 x = 'value1'。

这样更容易测试和维护查询(至少对我来说更容易)。

【讨论】:

以上是关于sql中的if else条件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

带有布尔条件的 if else 语句中的代码[重复]

我如何在我从数据库中获取的 get_file_contents 中使用 if else 条件 [重复]

if-else 中的值 [重复]

没有 else 子句的单行 If 条件 [重复]

熊猫if else条件多列[重复]

CSS if else 条件,移动纵向或横向[重复]