我必须跨三列搜索数据。对于某些用户,我搜索第 1 列,对于其他用户,我搜索第 1 列和第 3 列,最后,对于其他用户,我搜索第 2 列。
我知道我可以使用 case 或 if 语句并说 if userId = 1 then
运行特定的 SQL 语句。但这个声明相当大,我不想每次都重复整个事情。是否可以使用 CASE
或 IF
语句(或其他语句)来更改语句的 WHERE
部分中的条件?
例如,如果公司名称为 x,请检查第 1 列或第 3 列中的值,否则检查第 2 列中的值。
我有一个非常小的SQL Fiddle here ,但我不知道从哪里开始。
最佳答案
您始终可以直接使用 OR 子句在 where 语句中添加所需的逻辑:
[...] WHERE ( company_name = 'x' and (column_1 = @p or column_3 = @p) )
OR ( company_name <> 'x' and column_2 = @p )
关于mysql - 是否可以根据输入参数之一来决定 SQLWhere 子句的条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44040672/