2010-12-20 9 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'から何を得ようとしていますか? –

+0

実際の問題を説明してください。あなたの間違った解決方法ではありません。 – zerkms

+0

valは、テーブル名が何であっても、すべてのテーブルで共通のフィールドです。 – sla

答えて

1

実際にはSQLという文では実行できません。

data(フィールド値)をmetadata(テーブル名)として使用しようとしましたが、SQLはこれを許可していません。

2つのステートメントでブレークしたり、ストアドプロシージャで動的SQLを記述することができます。すべてのクライアント層がストアドプロシージャから結果セットを返すことをサポートしているわけではありません。

0

あなたはまた、選択動的な実行MA:

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; 
関連する問題