C# sql中的if-else条件
我想编写一个sql查询,它可以: 如果此查询从表1中选择X,其中X='value1'的结果返回1,如果从表2中选择X,其中X='value2'的结果返回2,则返回0 谢谢一种方法是选择和案例:C# sql中的if-else条件,c#,sql,sql-server,C#,Sql,Sql Server,我想编写一个sql查询,它可以: 如果此查询从表1中选择X,其中X='value1'的结果返回1,如果从表2中选择X,其中X='value2'的结果返回2,则返回0 谢谢一种方法是选择和案例: 虽然这不是一个有效的查询,也不是使用这样的查询的最佳实践,但它应该可以工作 select case when exists (select X from table1 where x = 'value1') then 1 when exists (select x from table
虽然这不是一个有效的查询,也不是使用这样的查询的最佳实践,但它应该可以工作
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;
当查询很短时,选择case是解决这种情况的更好方法。但当查询较长且复杂时,我喜欢使用用户定义的函数,如: 如果dbo.QueryExecution为NULL -做点什么 其他的 -做点什么 dbo.QueryExecution可以执行您的查询 从表1中选择X,其中X='value1'
通过这种方式,测试和维护查询更容易,至少对我来说更容易。是否可以使用变量实现:
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默认@标志值 将关于C语言中数据集读取的问题作为单独的问题发布。或者,更恰当地说,搜索大量现有的答案和已经涵盖这些内容的网站。@Yuck好的,我将编辑我的问题,谢谢谢谢谢谢,但是我如何阅读c中的“Then”部分?如何访问它?假设您要执行查询select 1;你知道怎么做吗?如果您这样做了,那么您也知道如何从C运行Gordon的查询。它使用case的事实是不相关的;它们都只是返回单个整数的查询。如果您没有,那么您应该在C中查找关于数据库访问的教程。
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