我想用不同的条件执行搜索操作。
例如。
Select * from test where field1="temp";
如果返回0记录,则检查
Select * from test where field2="temp";
如果返回0记录,则检查
Select * from test where field3="temp";
等等。每次更改查询字段。如果结果集不为空,则返回结果集。
我想知道以最佳方式执行此任务的最佳方式是什么?
创建Mysql函数,检查每个条件并返回。
在JAVA源代码中检查一下? (对我来说听起来不是一个好主意。)
在单个选择查询中是否还有其他方法可以执行此操作?
还有其他建议吗?我使用的是基本的JDBC servlet和MySql。
答案 0 :(得分:1)
尝试使用SQL CASE
:
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
或
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
http://dev.mysql.com/doc/refman/5.0/en/case.html
此外,执行此操作的存储过程也不错。
答案 1 :(得分:0)
用Java做这件事对我来说听起来不好。
private List<Object> retrieveData() {
String[] fields = {"field1","field2"};
String value = "foo";
List<Object> results;
for(String field : fields){
results = getResults(field, value);
if(!results.isEmpty()){
break;
}
}
return results;
}
public List<Object> getResults(String field, String value){
// Use Prepared statement here
List<Object> results = "Select * from test where " + field + " = " + value;
return results;
}
不确定通过查询执行此操作的性能。