mysql:列出所有带有列的表

时间:2017-11-18 22:53:57

标签: mysql

我正在尝试创建所有表的列表,后跟mysql中的数据库列。例如,如果我有两个表Table1和Table2及其各自的列,我希望输出为:

  

表1:col_1,col_2,col_3

     

表2:col_a,col_b,col_c,col_d

我写了这个查询todo所以

select TABLE_NAME as tn, CONCAT_WS (', ', SELECT COLUMN_NAME 
                                            from information_schema.columns 
                                            where TABLE_NAME = tn)
from information_schema.columns
where table_schema = 'pgstudies'
order by table_name,ordinal_position;

当我运行此代码时,它会返回错误:

  

1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法   在information_schema.columns附近的'SELECT COLUMN_NAME'附近   TABLE_NAME = tn)来自'第1行

请您告诉我如何解决此错误或提供另一种方法来获得相同的结果。

1 个答案:

答案 0 :(得分:2)

GROUP_CONCAT可以解决问题。

SELECT table_name, GROUP_CONCAT(column_name ORDER BY ordinal_position SEPARATOR ', ') as columns
FROM information_schema.columns
WHERE table_schema = 'pgstudies'
GROUP BY table_name
ORDER BY table_name;