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 サーブレットと 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 に答える