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】:一种方法是select
和case
:
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条件[重复]的主要内容,如果未能解决你的问题,请参考以下文章