1

私がやりたいのはwhere、データベースの列に格納されている句を含むMySQLクエリ(「結果クエリ」)を実行することです。クエリを含むこの列は、別のクエリ(「元のクエリ」)の結果です。

キャッチ:

  • 結果クエリのwhere句には変数値(または2つ)を含めることができます
  • 元のクエリを実行したときに結果のクエリがどうなるかわからないため、変数の値を渡すことができません

(結果クエリのリストと句内の変数はwhere私が定義するので、可能なすべての変数のリストがあります。)

基本的に、その変数をデータベース内の他の任意の数の値(1つの例:user_id)と相関させることができる必要があります。

original_query_table      | result_query_table
--------------------------------------------------------------
other_id result_query_id  | result_query_id  result_query
1        1                  1                "SELECT ... WHERE user_id = :id "   

2つの別々のクエリでこれを行う方法を知っていますが、問題は、これが1つのクエリだけで可能かどうかです。

4

1 に答える 1

1

私はこのようなことをします:

SELECT 'select * from table_a where col_a = ?' INTO @query, 1 into @param1 FROM dual;
PREPARE stmt FROM @query;
EXECUTE stmt USING @param1 ;

したがって、それをテーブルに変換すると、次のようになります。

SELECT a.result_query INTO @query, b.result_query_id INTO @param1 FROM result_query_table a, original_query_table b where a.result_query_id = b.result_query_id;
PREPARE stmt FROM @query;
EXECUTE stmt USING @param1 ;

where句に必要なパラメータの数を知っていますか?それが動的である場合、物事は少しトリッキーになる可能性があります。

于 2010-01-27T15:18:18.553 に答える