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|
WHERE TABLE_SCHEMA = '測試' AND與tbl.table_name = clm.table_name:您正在使用兩次,和您使用的是括號外crreated括號內的別名TBL –
@Ahmad:對不起,錯字 – Pallavi