存储的MySQL查询中的条款问题

时间:2010-01-25 00:28:37

标签: mysql where-clause

我想要做的是执行一个包含where子句(“结果查询”)的MySQL查询,该子句存储在数据库的一列中。此列包含查询,是另一个查询(“原始查询”)的结果。

捕获:

  • 结果查询的where子句可以包含变量值(或两个)
  • 我不知道执行原始查询时结果查询是什么,所以我无法传递变量的值

(结果查询列表以及where子句中的变量将由我定义,因此我将列出所有可能的变量。)

基本上,我需要能够将该变量与任意数量的其他值相关联,例如:数据库中的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 "   

我知道如何使用两个单独的查询来执行此操作,但问题是这是否可以只使用一个查询?

1 个答案:

答案 0 :(得分: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子句需要多少参数吗?如果这是动态的,那么事情可能会有点棘手。