2010-01-25 40 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