0

我想执行不同条件的搜索操作。

例如。

Select * from test where field1="temp";

如果返回 0 条记录,则检查

Select * from test where field2="temp";

如果返回 0 条记录,则检查

Select * from test where field3="temp"; 

等等。每次更改查询字段。如果结果集不为空,则返回结果集。

我想知道以良好的性能执行此任务的最佳方法是什么?

  1. 创建检查每个条件并返回的 Mysql 函数。

  2. 在 JAVA 源代码中检查这个?(对我来说听起来不是一个好主意)。

  3. 有没有其他方法可以在单个选择查询中执行此操作?

  4. 还有什么建议吗?我正在使用基本的 JDBC servlet 和 MySql。

4

2 回答 2

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

此外,执行此操作的存储过程会很好。

于 2013-07-22T11:23:53.410 回答
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;
}

不确定通过查询执行相同操作的性能。

于 2013-07-22T11:22:25.633 回答