これを使用して、PRIMARYインデックス列を取得しています。
SHOW INDEX FROM `table` WHERE Key_name='PRIMARY'
type、column_name、Key_nameなどのテーブルを返します。
Column_name
コラムだけが欲しいです。
私は試した:
SHOW INDEX.Column_name FROM `table` WHERE Key_name='PRIMARY'
しかし、それは機能しませんでした。何か案は?
これを使用して、PRIMARYインデックス列を取得しています。
SHOW INDEX FROM `table` WHERE Key_name='PRIMARY'
type、column_name、Key_nameなどのテーブルを返します。
Column_name
コラムだけが欲しいです。
私は試した:
SHOW INDEX.Column_name FROM `table` WHERE Key_name='PRIMARY'
しかし、それは機能しませんでした。何か案は?
のPRIMARYKEYからすべての列を(順番に)取得するには、次のコマンドをmydb.mytable
実行します。
SELECT column_name
FROM information_schema.statistics
WHERE table_schema='mydb'
AND table_name='mytable'
AND index_name='PRIMARY'
ORDER BY seq_in_index;
mytable
現在のデータベースのPRIMARYKEYからすべての列を(順番に)取得するには、次のコマンドを実行します。
SELECT column_name
FROM information_schema.statistics
WHERE table_schema=DATABASE()
AND table_name='mytable'
AND index_name='PRIMARY'
ORDER BY seq_in_index;
サンプルテーブルは次のとおりです。
mysql> show create table cacti.host_snmp_cache\G
*************************** 1. row ***************************
Table: host_snmp_cache
Create Table: CREATE TABLE `host_snmp_cache` (
`host_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
`snmp_query_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
`field_name` varchar(50) NOT NULL DEFAULT '',
`field_value` varchar(255) DEFAULT NULL,
`snmp_index` varchar(255) NOT NULL DEFAULT '',
`oid` text NOT NULL,
PRIMARY KEY (`host_id`,`snmp_query_id`,`field_name`,`snmp_index`),
KEY `host_id` (`host_id`,`field_name`),
KEY `snmp_index` (`snmp_index`),
KEY `field_name` (`field_name`),
KEY `field_value` (`field_value`),
KEY `snmp_query_id` (`snmp_query_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
mysql>
PRIMARYKEYには4つの列があることに注意してください
クエリの実行は次のとおりです。
mysql> SELECT column_name
-> FROM information_schema.statistics
-> WHERE table_schema='cacti'
-> AND table_name='host_snmp_cache'
-> AND index_name='PRIMARY'
-> ORDER BY seq_in_index;
+---------------+
| column_name |
+---------------+
| host_id |
| snmp_query_id |
| field_name |
| snmp_index |
+---------------+
4 rows in set (0.00 sec)
mysql>
GROUP_CONCATを使用すると、列名をCSVリストに収集できます。
mysql> SELECT GROUP_CONCAT(column_name) PrimaryKeyColumns
-> FROM information_schema.statistics
-> WHERE table_schema='cacti'
-> AND table_name='host_snmp_cache'
-> AND index_name='PRIMARY'
-> ORDER BY seq_in_index;
+---------------------------------------------+
| PrimaryKeyColumns |
+---------------------------------------------+
| host_id,snmp_query_id,field_name,snmp_index |
+---------------------------------------------+
1 row in set (0.01 sec)
mysql>
試してみる !!!