有没有一种方法可以像if-else一样在where where condition中使用

时间:2017-02-21 13:03:47

标签: sql postgresql

我有以下表格结构。根据什么类型的请求,我应该能够选择正确的列来匹配值。

| resource_id | result | request          | 
|             | 15127  | /campaign/add    |
|  15127      |        | /campaign/modify |

例如:

如果请求与/campaign/add类似,则应将结果与用户发送的数字进行比较,否则应选择resource_id。

以编程方式我可以说

if(request.equals())
     fetch values from database where resource_id = 15127
else
     fetch values from database where resource_id = 15127

现在我需要使用数据库做同样的事情。

1 个答案:

答案 0 :(得分:4)

您可以使用CASE表达式来执行此操作:

select *
from the_table
where case 
        when request = '/campaign/add' then result
        when request = '/campaign/modify' then resource_id 
      end = number_sent_by_the_user