您现在的位置是:网站首页>数据库
Mysql查询指定库某个表的所有字段
【数据库】阿文2019年5月17日6533浏览
简介开发时我们经常遇到查询一个表所有字段的情况,当开发规范不让用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多表关联修改问题
下一篇: 怎么做关键字按照匹配度相似度排序?
评论文明上网,理性发言0条评论