首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在我的数据库列表中添加表计数

问在我的数据库列表中添加表计数
EN

Stack Overflow用户
提问于 2016-05-04 14:10:47
回答 1查看 52关注 0票数 3

我想列出我的所有自定义数据库:

代码语言:javascript
复制
SELECT `SCHEMA_NAME` AS 'Database',
       `DEFAULT_CHARACTER_SET_NAME` AS 'Character Set',
       `DEFAULT_COLLATION_NAME` AS 'Collation'
  FROM `information_schema`.`SCHEMATA`
  WHERE `SCHEMA_NAME` NOT IN ('information_schema','mysql','performance_schema')
  ORDER BY `SCHEMA_NAME` ASC

但是,我想在每个数据库中包括表的数量:

代码语言:javascript
复制
SELECT `TABLE_SCHEMA`, COUNT(*)
  FROM `information_schema`.`TABLES`
  WHERE `TABLE_SCHEMA` NOT IN ('information_schema','mysql','performance_schema')
  GROUP BY `TABLE_SCHEMA`

...in一个表:

代码语言:javascript
复制
[
  0 => [ 'Database'=>'customDb1', ..., 'Table Count'=>3 ],
  1 => [ 'Database'=>'customDb2', ..., 'Table Count'=>8 ],
  2 => [ 'Database'=>'customDb3', ..., 'Table Count'=>0 ]
]

我知道,运行第一个查询(在PHP中遍历每个数据库)和运行第二个查询要比使用表JOIN之类的查询效率低得多,但我只是没有掌握JOIN语法。我正在使用的琳达教程就在语言的这个相当(可能)复杂的部分中传播开来,而我所尝试的每一件事都会抛出错误或糟糕的结果。

我确信,对于创建MySQL数据库接口的开发人员来说,这是一个常见的查询。如何仅使用MySQL查询将表计数添加到数据库列表中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-04 14:20:38

试试这个:

代码语言:javascript
复制
SELECT s.`SCHEMA_NAME` AS 'Database',
       s.`DEFAULT_CHARACTER_SET_NAME` AS 'Character Set',
       s.`DEFAULT_COLLATION_NAME` AS 'Collation',
       COALESCE(COUNT(t.`TABLE_SCHEMA`),0) as table_cnt
FROM `information_schema`.`SCHEMATA` s
LEFT JOIN `information_schema`.`TABLES` t
 ON(s.`SCHEMA_NAME` = t.`TABLE_SCHEMA`)
WHERE s.`SCHEMA_NAME` NOT IN ('information_schema','mysql','performance_schema')
GROUP BY s.`SCHEMA_NAME`
ORDER BY s.`SCHEMA_NAME` ASC
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37030290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档