2016-02-17 96 views
1

我正在使用MySql 5.6.10,我想要一個具有外部查詢「表名」的查詢在內部查詢中使用,以獲取所有列的「表(外查詢)「,Mysql內部查詢給出外部查詢選定表名的所有列名

我有一個DB兩個表說測試

第一個表tbl_1

CREATE TABLE `tbl_1` (
    `id` int(10) NOT NULL AUTO_INCREMENT, 
    `log_id` int(10) DEFAULT NULL, 
    `new_loc_id` int(10) DEFAULT NULL, 
    `old_loc_id` int(10) DEFAULT NULL, 
    `msg` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

第二個表tbl_2

CREATE TABLE `tbl_2` (
    `id` int(10) NOT NULL AUTO_INCREMENT, 
    `name` varchar(25) DEFAULT NULL, 
    `loc_id` int(10) DEFAULT NULL, 
    `parent_id` int(10) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

我已經組成是這樣的:

SELECT CONCAT('|QUERY|Select * from test.',tbl.table_name,'|\n' , 
'|COLUMN|',(SELECT GROUP_CONCAT(COLUMN_NAME SEPARATOR ' | ') FROM information_schema.COLUMNS clm 
WHERE table_schema = 'test' 
AND tbl.table_name = clm.table_name),'|\n' 
) AS ddl 
INTO OUTFILE '/tmp/test.txt' 
FROM information_schema.TABLES tbl 
WHERE tbl.table_schema = 'test' 
AND tbl.table_type = 'base table'; 

輸出查詢的是錯誤:

Error Code : 1054 
Unknown column 'tbl.table_name' in 'where clause' 

什麼我期待的是:

|QUERY|Select * from test.tbl_1| 
|COLUMN|id | log_id | new_loc_id | old_loc_id | msg | id | name | loc_id | parent_id| 

|QUERY|Select * from test.tbl_2| 
|COLUMN|id | name| loc_id| parent_id| 
+1

WHERE TABLE_SCHEMA = '測試' AND與tbl.table_name = clm.table_name:您正在使用兩次,和您使用的是括號外crreated括號內的別名TBL –

+0

@Ahmad:對不起,錯字 – Pallavi

回答

1

查詢是完美的。除了AND AND以外,還有 。 WHERE TABLE_SCHEMA = '測試' AND與