Mysql Inner查询给出了外部查询所选列名的所有列名

时间:2016-02-17 07:05:07

标签: mysql

我正在使用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|

1 个答案:

答案 0 :(得分:1)

查询很完美。 AND AND除外。 WHERE table_schema ='test'AND AND