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