【问题标题】:How get n rows from information_Schema from each of databases (MySQL)如何从每个数据库的 information_Schema 中获取 n 行(MySQL)
【发布时间】:2015-12-13 12:52:37
【问题描述】:

我不是 DBA 或...但我只是对编写查询很感兴趣,想了解它的技巧..现在我问自己这个问题:

如何从每个数据库的information_Schema 中获取n 行? (不知道数据库数量)

例如...我们有 3 个数据库 ( (information_Schema,stack,overflow) 我们不知道。

我想从每个数据库中获取 20 个表。我该怎么做?

还有一件事……请不要给我程序。

【问题讨论】:

  • 我很困惑 - 你想列出表格,还是列出表格中的完整行?如果是满行,则无法在没有存储过程或应用程序代码的情况下完成,因为它需要构建动态 SQL 字符串。您不能通过表名加入 information_schema,因为表是字符串值,而不是标识符。
  • tnx ... 看... 是的,我想根据条件列出表。简单的例子:从 information_Schema.tables 中选择 table_name >> 它为我们提供了所有数据库中的所有表。现在我想要这样的查询,但根据这个条件:从每个数据库中选择 20 个表(不知道我们有多少数据库。)我希望查询在每个地方都可以工作,而不仅仅是一个数据库..

标签: mysql get rows


【解决方案1】:

您可以使用以下方法来实现您想要的:

set @schema_name='';
set @num=0;

select table_schema, table_name FROM (
select 
  table_schema, 
  table_name, 
  @num := if(@schema_name = table_schema, @num + 1, 1) as dummy_1,
  @schema_name := table_schema as dummy_2,
  @num as row_number
  from information_schema.tables 
  group by table_schema, table_name
  having row_number <= 20) A ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 2021-05-11
    • 2022-01-16
    • 1970-01-01
    • 2021-06-17
    • 2019-11-08
    • 1970-01-01
    相关资源
    最近更新 更多