我正在尝试创建所有表的列表,后跟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行
请您告诉我如何解决此错误或提供另一种方法来获得相同的结果。
答案 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;