我正在使用mysql workbench(SQL编辑器)。我需要复制Mysql查询浏览器中存在的每个查询中的列列表。 例如
Select * From tb
我想要的字段列表如: ID,标题,keyno,......
答案 0 :(得分:2)
您的意思是您希望能够为指定的表获取一列或多列?
第一种方式
执行SHOW COLUMNS FROM your_table_name
并从那里开始,根据您的需要添加一些基本过滤,通过指定您只需要数据类型为int的列,默认值为null等,例如SHOW COLUMNS FROM your_table_name WHERE type='mediumint(8)' AND
{空{1}}
第二路 这种方式更加灵活和强大,因为您可以组合MySQL的INFORMATION_SCHEMA内部数据库中保存的许多表和其他属性,这些数据库包含所有数据库列,表等的记录。使用下面的查询并将TABLE_NAME设置为您想要的表找到
的列='yes'
要将匹配列数限制为特定数据库,请在查询末尾添加SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='your_table_name';
此外,要让列名不是多行而是以逗号分隔列表的形式显示在单行中,您可以使用AND TABLE_SCHEMA='your_db_name'
而不是GROUP_CONCAT(COLUMN_NAME,',')
答案 1 :(得分:0)
接受的解决方案很好,但它仅限于表格中的字段名称。处理任意查询将标准化您的select子句,以便能够使用正则表达式仅去除列别名。我将select子句格式化为“每个元素1行”,因此
Select 1 + 1 as Col1, 1 + 2 Col2 From Table
变为
Select 1 + 1 as Col1
, 1 + 2 Col2
From Table
然后我在“每个选择元素的1行”版本上使用简单的正则表达式来替换"^.* "
(不包括引号)。正则表达式在行的最后一个空格之前找到所有内容,因此它假定您的列别名不包含空格(因此用下划线替换空格)。或者,如果您不喜欢“每个元素一行”,那么请始终使用“as”关键字为您提供正则表达式可以掌握的句柄。