您现在的位置是:网站首页>数据库

Mysql查询指定库某个表的所有字段

数据库阿文2019年5月17日11170浏览

简介开发时我们经常遇到查询一个表所有字段的情况,当开发规范不让用select*fromtable来查询所有字段时,难道我们把表结构粘贴出来修改吗?

        开发时我们经常遇到查询一个表所有字段的情况,当开发规范不让用select * from table 来查询所有字段时,难道我们把表结构粘贴出来修改吗?

        在这里我建议可以用查询库里面information_schema关键信息,省时省力还不出错。

        mysql安装成功后可以看到已经存在mysql、information_schema和test这个几个数据库,information_schema库中有一个名为COLUMNS的表,这个表中记录了数据库中所有表的字段信息。知道这个表后,获取任意表的字段就只需要一条select语句即可。例如:

select COLUMN_NAME from information_schema.COLUMNS where table_name = 'your_table_name'; (自测有效)

上述做法有一点问题,如果多个数据库中存在你想要查询的表名,那么查询的结果会包括全部的字段信息。

通过DESC information_schema.COLUMNS可以看到该表中列名为TABLE_SCHEMA是记录数据库名,因此下面的写法更为严格

select COLUMN_NAME from information_schema.COLUMNS where table_name = 'your_table_name' and table_schema = 'your_db_name'; (自测有效)

以上方法能得到某个表所有字段,那怎么实现拼接呢?

以下两个方法是我工作中经常用到的,亲测可用

1.默认逗号拼接

select GROUP_CONCAT(COLUMN_NAME) from information_schema.COLUMNS where table_name = 'your_table_name';

2.自定义前缀逗号拼接

select group_concat(COLUMN_NAME separator ',hos.') 
from information_schema.COLUMNS where table_schema='your_database' 
and table_name = 'your_table_name';

不过自定义前缀逗号拼接有一点点小瑕疵,查询出来的字符串第一个字段会没有自定义前缀,需要自己添加。


标签: mysql sql

8

评论文明上网,理性发言0条评论