怎麼可能做到以下幾點: (我使用的MySQL - phpMyAdmin的)MySQL的 - 查詢,在查詢內部
該查詢返回一個表名:
Select table_name from Table1 where id = 1
我想用它另一個查詢中,如:
select val from (Select table_name from Table1 where id = 1)
但是這肯定是不行的,而且由於phpMyAdmin的不支持調用存儲過程,莫不是這方面的任何可能的解決方案?
怎麼可能做到以下幾點: (我使用的MySQL - phpMyAdmin的)MySQL的 - 查詢,在查詢內部
該查詢返回一個表名:
Select table_name from Table1 where id = 1
我想用它另一個查詢中,如:
select val from (Select table_name from Table1 where id = 1)
但是這肯定是不行的,而且由於phpMyAdmin的不支持調用存儲過程,莫不是這方面的任何可能的解決方案?
您無法真正在單一SQL
聲明中執行此操作。
您正在嘗試使用data
(字段值)作爲metadata
(表名稱),並且SQL
不允許這樣做。
您可以在存儲過程中將其分成兩條語句或寫入動態SQL
。請注意,並非所有客戶端層都支持從存儲過程返回結果集。
還ま執行動態選擇:
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;
什麼是'val'?你想從'table_name'得到什麼? – 2010-12-20 15:05:20
解釋真正的問題,而不是你錯誤的解決它的嘗試。 – zerkms 2010-12-20 15:06:27
val是所有表中常見的字段,不管表名是 – sla 2010-12-20 15:06:36