是否可以根据其中一个输入参数来确定SQL Where子句的条件?

时间:2017-05-18 06:57:00

标签: mysql sql

我必须在三列中搜索数据。对于某些用户,我搜索第1列,对于其他用户,我搜索第1列和第3列,最后搜索其他用户,我会查看第2列。

我知道我可以使用case或if语句并说if userId = 1 then运行特定的SQL statememnt。但声明非常大,我不想每次重复整个事情。是否可以使用CASEIF语句(或其他内容)来更改语句的WHERE部分中的条件?

例如,如果公司名称为x,则检查第1列或第3列中的值,否则请在第2列中选中。

我是一个非常小的SQL Fiddle here,但我不知道从哪里开始。

1 个答案:

答案 0 :(得分:0)

您始终可以使用 OR 子句直接在 where 语句中添加所需的逻辑:

[...] WHERE ( company_name = 'x' and (column_1 = @p or column_3 = @p) )
            OR ( company_name <> 'x' and column_2 = @p )