2010-12-20 62 views
1

怎麼可能做到以下幾點: (我使用的MySQL - phpMyAdmin的)MySQL的 - 查詢,在查詢內部

該查詢返回一個表名:

Select table_name from Table1 where id = 1 

我想用它另一個查詢中,如:

select val from (Select table_name from Table1 where id = 1) 

但是這肯定是不行的,而且由於phpMyAdmin的不支持調用存儲過程,莫不是這方面的任何可能的解決方案?

+0

什麼是'val'?你想從'table_name'得到什麼? – 2010-12-20 15:05:20

+0

解釋真正的問題,而不是你錯誤的解決它的嘗試。 – zerkms 2010-12-20 15:06:27

+0

val是所有表中常見的字段,不管表名是 – sla 2010-12-20 15:06:36

回答

1

您無法真正在單一SQL聲明中執行此操作。

您正在嘗試使用data(字段值)作爲metadata(表名稱),並且SQL不允許這樣做。

您可以在存儲過程中將其分成兩條語句或寫入動態SQL。請注意,並非所有客戶端層都支持從存儲過程返回結果集。

0

還ま執行動態選擇:

declare v_table_name VarChar(128); 
BEGIN 

Select table_name into v_table_name from Table1 where id = 1 
SET @s = CONCAT('SELECT * FROM ', v_table_name, ' where id = 1'); 
PREPARE stmt1 FROM @s; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1; 

END;