【发布时间】:2015-03-25 16:44:59
【问题描述】:
我的表格包含以下列
-> col1, col2, col3
我正在尝试使用这些列进行搜索。所以我从用户那里获取了 3 个输入。
简单的搜索规则:
1) 如果用户没有输入任何col,那么它应该只使用其他 2 列进行搜索。
select * from myTable where col1="abc" and col2="def"; // something like this. Any combination like col1-col2, col1-col3 or col2-col3
2) 如果输入了所有cols,则:
select * from myTable where col1="abc" and col2="def" and col3="ghi"; // something like this
3) 如果用户输入了col 中的任何一个,则:
select * from myTable where col1="abc"; // something like this. It can be col1, col2 or col3.
我知道这可以通过对数据库使用不同的 select 语句并在 Java 代码中使用 if-else 来完成。
我想要一个针对这种情况的最优化解决方案(几乎没有代码/解释)。
编辑
注意:所有 3 列都是 NULL !我正在使用 Microsoft-SQL Server (MSSQL),但我想要 MySQL 和 MSSQL 的解决方案
【问题讨论】:
-
您使用的是什么 ORM,顺便说一句,查询将始终在您的 if else 语句之后创建,因此将进行优化。
-
@ankur-singhal 只想要一个简单的 sql 查询。最优化的解决方案。
-
您可以使用包含 where 子句的循环来执行此操作,然后将其用于单选。
-
你用
mysql和mssql(Microsoft SQL Server) 标记了这个。你真正使用的是什么? -
@a_horse_with_no_name
mssql...但我想要两个数据库的解决方案。
标签: java mysql sql sql-server jdbc