我甚至不知道我的頭銜是否有意義,所以希望我的解釋能夠彌補我的標題清晰度。如何將一個表中的行值用作一個查詢中另一個表的名稱?
我想創建一個返回關於我的表的一般信息,行數,平均長度,數據長度單個查詢,分(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)值的表的名稱。 –