2

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

Select * From tb

我想要的字段列表如下:id,title,keyno,......

4

3 回答 3

2

您的意思是您希望能够获取指定表的一列或多列?

第一种方法 DoSHOW COLUMNS FROM your_table_name并从那里根据您想要的内容添加一些基本过滤,方法是指定您只需要数据类型为 int 的列,默认值为 null 等,例如SHOW COLUMNS FROM your_table_name WHERE type='mediumint(8)' ANDnull='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

于 2012-08-01T10:03:48.330 回答
1

要选择 select 语句中的所有列,请转到 SCHEMAS 菜单并右键单击要选择列名的 ok 表,然后选择“复制到剪贴板 > 全选语句”。

在此处输入图像描述

于 2021-12-30T14:26:23.080 回答
0

接受的解决方案很好,但仅限于表中的字段名称。处理任意查询将标准化您的 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”关键字来为您提供正则表达式可以掌握的句柄。

于 2014-10-15T13:44:27.813 回答