mysql - 是否可以根据输入参数之一来决定 SQLWhere 子句的条件?

标签 mysql sql

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

我知道我可以使用 case 或 if 语句并说 if userId = 1 then 运行特定的 SQL 语句。但这个声明相当大,我不想每次都重复整个事情。是否可以使用 CASEIF 语句(或其他语句)来更改语句的 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/

相关文章:

mysql - SQL 更新查询问题 #1054

java - 如何回滚一次插入到 3 个表中的数据?

sql - 使用 pgrouting 需要 Lat,long 形式的路径

mysql - 使用多个选择器从 SQL 中的一组中选择一行

php - 如何将Asterisk服务器与外部关系数据库(例如mysql)集成?

PHP/MySQL 使用管道分隔符获取并转换为 csv

mysql - 统计mysql中文本字段中多个单词出现的次数

Java 应用程序给出整数的随机输出

SQL:在跟进还款期之前检查日期是否按时付款

mysql - SQL - 查找具有相似兴趣的用户