我正在使用MySql 5.6.10,我想要一个具有外部查询"表名"的查询在内部查询中使用以获取"表"(外部查询)的所有列,
我在数据库中有两个表 test
第一张表 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';
查询的OutPut是错误:
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|
答案 0 :(得分:1)
查询很完美。 AND AND除外。 WHERE table_schema ='test'AND AND