在Mysql Workbench中复制选定的查询字段名称

时间:2012-08-01 09:49:55

标签: mysql-workbench

我正在使用mysql workbench(SQL编辑器)。我需要复制Mysql查询浏览器中存在的每个查询中的列列表。 例如

Select * From tb

我想要的字段列表如:  ID,标题,keyno,......

2 个答案:

答案 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”关键字为您提供正则表达式可以掌握的句柄。