你能在SQL中使用if-then-else逻辑吗?

37 浏览
0 Comments

你能在SQL中使用if-then-else逻辑吗?

这个问题已经有了答案

如何在 SQL SELECT 中执行 IF ... THEN?

我需要基于某种优先级从表中选择数据,例如:

select product, price from table1 where project = 1
-- pseudo: if no price found, do this:
select product, price from table1 where customer = 2
-- pseudo: if still no price found, do this:
select product, price from table1 where company = 3

也就是说,如果我找到了基于project = X的3种产品价格,我就不想在customer = Y上进行选择。我只想返回最终的3行并完成。

在SQL中,应该如何处理这种情况?使用某种CASE语句进行伪if?进行联合或其他一些聪明的操作吗?

编辑:我正在使用MS SQL。

谢谢!

admin 更改状态以发布 2023年5月24日
0
0 Comments

在SQL中,CASE语句是最接近IF语句的语句,它支持SQL Server的所有版本:

SELECT CASE  
           WHEN       THEN  
           WHEN  THEN  
           ELSE  
       END 
  FROM 

0
0 Comments

你可以执行以下的SQL查询

IF ((SELECT COUNT(*) FROM table1 WHERE project = 1) > 0) 
    SELECT product, price FROM table1 WHERE project = 1
ELSE IF ((SELECT COUNT(*) FROM table1 WHERE project = 2) > 0) 
    SELECT product, price FROM table1 WHERE project = 2
ELSE IF ((SELECT COUNT(*) FROM table1 WHERE project = 3) > 0)
    SELECT product, price FROM table1 WHERE project = 3

0