我甚至不知道我的头衔是否有意义,所以希望我的解释能够弥补我的标题清晰度。如何将一个表中的行值用作一个查询中另一个表的名称?
我想创建一个返回关于我的表的一般信息,行数,平均长度,数据长度单个查询,分(ID)和max(ID)值等
我知道如何查询INFORMATION_SCHEMA.PARTITIONS
以获取“大小”信息。例如:
mysql> SELECT TABLE_NAME AS Name,
-> TABLE_ROWS as 'Row Count',
-> AVG_ROW_LENGTH AS 'Avg Row Len',
-> DATA_LENGTH,
-> ROUND(DATA_LENGTH/1024/1024) AS 'DATA_LENGTH(M)'
->
-> FROM INFORMATION_SCHEMA.PARTITIONS
->
-> WHERE (TABLE_NAME = 'event_log'
-> OR TABLE_NAME = 'event_log_policy_entries'
-> OR TABLE_NAME = 'event_log_policy_status');
+--------------------------+-----------+-------------+-------------+----------------+
| Name | Row Count | Avg Row Len | DATA_LENGTH | DATA_LENGTH(M) |
+--------------------------+-----------+-------------+-------------+----------------+
| event_log | 10000089 | 182 | 1822425088 | 1738 |
| event_log_policy_entries | 10000137 | 171 | 1710227456 | 1631 |
| event_log_policy_status | 10000094 | 244 | 2449473536 | 2336 |
+--------------------------+-----------+-------------+-------------+----------------+
3 rows in set (0.57 sec)
mysql>
而且,我知道如何使用在每个表的基础上MIN()
和MAX()
函数来获得他们的最小/最大ID值。 (我所有的三个表都有一个名为id的列)。
mysql> SELECT MIN(id) AS 'Min', MAX(id) AS 'Max' from event_log;
+------+---------+
| Min | Max |
+------+---------+
| 0 | 9999999 |
+------+---------+
1 row in set (0.00 sec)
mysql>
但是我不知道如何使这个一个查询。我的目标是将有一个表,如下所示:
+--------------------------+-----------+-------------+-------------+----------------+-----+-----+
| Name | Row Count | Avg Row Len | DATA_LENGTH | DATA_LENGTH(M) | Min | Max |
+--------------------------+-----------+-------------+-------------+----------------+-----+-----+
| event_log | 10000089 | 182 | 1822425088 | 1738 | # | # |
| event_log_policy_entries | 10000137 | 171 | 1710227456 | 1631 | # | # |
| event_log_policy_status | 10000094 | 244 | 2449473536 | 2336 | # | # |
+--------------------------+-----------+-------------+-------------+----------------+-----+-----+
我一直在阅读有关表连接和子查询,但我一直没能想出解决办法,但。 (我假设这可以通过一个查询完成)。
不幸的是,这只适用于event_log,返回一行而不是全部三行。我尝试通过将'FROM'行更改为[INFORMATION_SCHEMA.PARTITIONS,event_log,event_log_policy_entries,event_log_policy_status]来扩展它,但是失败并显示消息“ERROR 1052(23000):字段列表中的列'id'含糊不清” –
哦! INFORMATION_SCHEMA.PARTITIONS和INFORMATION_SCHEMA中的TABLE_NAME列以外的event_log表之间没有关系.PARTITIONS是我试图获取MAX(id)值的表的名称。 –