2015-12-13 39 views
1

我不是DBA或...但我只是非常有兴趣编写查询来学习它的技巧。现在我问自己这个问题:如何从每个数据库(MySQL)的information_Schema获取n行

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

例如...我们有3个数据库((INFORMATION_SCHEMA,堆栈,溢出) ,我们不知道。

我想要得到的20 ?从每个数据库中的表。我如何能做到这一点

一个其他的事情......请不要给我的程序

+0

我很困惑 - 你想列出表格,还是列出表格中的全部行?如果是完整的行,没有存储过程或应用程序代码就无法完成,因为它需要构建动态SQL字符串。您无法通过表名称与information_schema进行连接,因为表中的字符串值不是标识符。 –

+0

tnx ...看...是的,我想列出表格,但基于条件..简单的例子: 从information_Schema.tables中选择table_name >>它给我们从所有数据库的所有表。 现在我想这样的查询,但根据这种情况: 从每个数据库中选择20个表(不知道我们有多少数据库。)我希望查询工作,每个地方不只是一个数据库.. – Milad

回答

0

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

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 ; 
相关问题