私のタイトルが理にかなっているかどうか分からないので、私の説明が私の湖のタイトルを補うことができれば幸いです。1つのクエリの別のテーブルの名前として1つのテーブルの行の値を使用する方法はありますか。
私は私のテーブルに関する一般的な情報、行数、平均長、データ長を返す単一のクエリを作成したい、分(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>
はまた、私は彼らの最小/最大ID値を取得するには、テーブルごとにMIN()
とMAX()
関数を使用する方法を知っています。 (私のテーブルの3つすべてにidという名前の列があります)。私はこの1クエリを作成する方法がわからないしかし
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に対してのみ機能し、3つすべてではなく1つの行を返します。私は、 'INFORMATION_SCHEMA.PARTITIONS、event_log、event_log_policy_entries、event_log_policy_status]になるように' FROM '行を変更して拡張しようとしましたが、 "ERROR 1052(23000):フィールドリストの' id '列が曖昧です" –
! INFORMATION_SCHEMA.PARTITIONSとINFORMATION_SCHEMA.PARTITIONSのTABLE_NAME列以外のevent_log表との間には関係がありません。MAX(ID)値を取得しようとしている表の名前です。 –