1

我想做的是执行一个包含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 "   

我知道如何用两个单独的查询来做到这一点,但问题是这是否可能只用一个查询?

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 回答