你能在SQL中使用if-then-else逻辑吗?
你能在SQL中使用if-then-else逻辑吗?
这个问题已经有了答案:
我需要基于某种优先级从表中选择数据,例如:
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日
在SQL中,CASE语句是最接近IF语句的语句,它支持SQL Server的所有版本:
SELECT CASEWHEN THEN WHEN THEN ELSE END FROM
你可以执行以下的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