我已经创建了一个名为“table1”的临时表。我试图列出我的临时表的列。我没有得到任何值。这是我的mysql查询。
SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'table2';
有没有人帮帮我?谢谢
jogvjijk1#
无法使用INFORMATION_SCHEMA获取临时表列唯一可以使用的方法是使用SHOW CREATE TABLE table2“INFORMATION_SCHEMA.COLUMNS”不包含临时表的列。
SHOW CREATE TABLE table2
byqmnocz2#
您可以使用SHOW COLUMS来实现这一点。示例表:
CREATE TEMPORARY TABLE SalesSummary ( product_name VARCHAR(50) NOT NULL, total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00, avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00, total_units_sold INT UNSIGNED NOT NULL DEFAULT 0 );
命令:SHOW COLUMNS FROM SalesSummary;输出:
mysql> SHOW COLUMNS FROM SalesSummary; +------------------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------+------------------+------+-----+---------+-------+ | product_name | varchar(50) | NO | | NULL | | | total_sales | decimal(12,2) | NO | | 0.00 | | | avg_unit_price | decimal(7,2) | NO | | 0.00 | | | total_units_sold | int(10) unsigned | NO | | 0 | | +------------------+------------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
更多细节请参见手册部分13.7.5.5for MySQL 5.7. Link另一种可能性是使用SHOW CREATE TABLE:
mysql> SHOW CREATE TABLE SalesSummary\G *************************** 1. row *************************** Table: SalesSummary Create Table: CREATE TEMPORARY TABLE `SalesSummary` ( `product_name` varchar(50) NOT NULL, `total_sales` decimal(12,2) NOT NULL DEFAULT '0.00', `avg_unit_price` decimal(7,2) NOT NULL DEFAULT '0.00', `total_units_sold` int(10) unsigned NOT NULL DEFAULT '0' ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.00 sec)
这里有更多的details。在Mysql 5.7中,有一个单独的表INNODB_TEMP_TABLE_INFO来实现这一点。
sbtkgmzw3#
可以获得 any 表的列名列表。此方法也适用于TEMPORARY表:
SET @columns_string = '' ; SHOW COLUMNS FROM `mysql`.`user` WHERE @columns_string := CONCAT(`Field`, ',', @columns_string) ; SELECT @columns_string ;
@columns_string的值为:
@columns_string
account_locked,password_lifetime,password_last_changed,password_expired,authentication_string,plugin,max_user_connections,max_connections,max_updates,max_questions,x509_subject,x509_issuer,ssl_cipher,ssl_type,Create_tablespace_priv,Trigger_priv,Event_priv,Create_user_priv,Alter_routine_priv,Create_routine_priv,Show_view_priv,Create_view_priv,Repl_client_priv,Repl_slave_priv,Execute_priv,Lock_tables_priv,Create_tmp_table_priv,Super_priv,Show_db_priv,Alter_priv,Index_priv,References_priv,Grant_priv,File_priv,Process_priv,Shutdown_priv,Reload_priv,Drop_priv,Create_priv,Delete_priv,Update_priv,Insert_priv,Select_priv,User,Host,
这个解决方案的问题(除了需要解析字符串之外)是SHOW COLUMNS命令将 * 总是 * 生成一个(空的)结果集。这意味着您不能在返回SELECT的存储过程中真正使用此方法(您最终将得到多个结果集)。
SHOW COLUMNS
3条答案
按热度按时间jogvjijk1#
无法使用INFORMATION_SCHEMA获取临时表列
唯一可以使用的方法是使用
SHOW CREATE TABLE table2
“INFORMATION_SCHEMA.COLUMNS”不包含临时表的列。
byqmnocz2#
您可以使用SHOW COLUMS来实现这一点。
示例表:
命令:SHOW COLUMNS FROM SalesSummary;
输出:
更多细节请参见手册部分13.7.5.5for MySQL 5.7. Link
另一种可能性是使用SHOW CREATE TABLE:
这里有更多的details。
在Mysql 5.7中,有一个单独的表INNODB_TEMP_TABLE_INFO来实现这一点。
sbtkgmzw3#
可以获得 any 表的列名列表。
此方法也适用于TEMPORARY表:
@columns_string
的值为:这个解决方案的问题(除了需要解析字符串之外)是
SHOW COLUMNS
命令将 * 总是 * 生成一个(空的)结果集。这意味着您不能在返回SELECT的存储过程中真正使用此方法(您最终将得到多个结果集)。