我知道如何在mysql中一次查询出表的前几行。但是我有一个包含50多个表的数据库,因此任务变得繁琐。我想知道是否有一种方法可以一次检索全部?
我知道在sql server中我们可以使用它:
DECLARE @sql VARCHAR(MAX)='';
SELECT @sql=@sql+'SELECT TOP 3 * FROM '+'['+SCHEMA_NAME(schema_id)+'].['+name+']'+';'
FROM sys.tables
EXEC(@sql);
但是我不知道如何使用mySQL。
谢谢!
SELECT * FROM [tbl] LIMIT 3
。尽管SQL标准可以自由选择任何3行,但是前3行是对单个表选择的通常实现。
SELECT * FROM schema_id.name LIMIT 3
假设,schema_id是您的架构名称,name是您的表名称。它返回前3行。
根据条件,您可以选择MAX()或其他聚合函数以使其返回特定的行。
这当然不是仅MySQL的答案,但是由于我最近需要完成OP想要的工作,而且我看不到其他答案,所以这是a解决方案。
mysql [args] -s -e "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='[your_db]'" | xargs -I{} mysql [args] -e "USE [your_db]; SELECT * FROM {} LIMIT 3"
[args]
是用于MySQL命令行(主机和端口等)的参数,[your_db]
是要转储的数据库的名称。