2010-01-25 36 views
1

我想要做的是执行包含存储在数据库中的列中的where子句(“结果查询”)的MySQL查询。包含该查询的此列是另一个查询(“原始查询”)的结果。何处子句存储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

我会做这样的事情:

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子句会需要什么?如果这是动态的,那么事情会变得棘手。

+0

不幸的是,这是问题所在。我不知道它需要多少个参数。有时候是1,有时候是3.我不是设置在桌子的结构上,如果改变的话有帮助? – munch 2010-01-27 17:28:51

+0

所以这个答案帮助我解决了另一个问题。你值得信任。不要把所有的要点花在一个地方:P – munch 2010-02-16 10:26:46