我创建了一个名为"table1"的临时表.我想列出临时表的列.我没有得到任何价值观.这是我的mysql查询.
SELECT column_name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'table2';
Run Code Online (Sandbox Code Playgroud)
有人帮我吗?谢谢
您无法使用INFORMATION_SCHEMA获取临时表列
您可以使用的唯一方法是使用 SHOW CREATE TABLE table2
"INFORMATION_SCHEMA.COLUMNS"不包含临时表的列.
您可以使用 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
);
Run Code Online (Sandbox Code Playgroud)
命令: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)
Run Code Online (Sandbox Code Playgroud)
更多详细信息请参见 MySQL 5.7 手册第 13.7.5.5 节。关联
另一种可能性是使用 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)
Run Code Online (Sandbox Code Playgroud)
以下是更多详细信息。
在 Mysql 5.7 中,有一个名为 INNODB_TEMP_TABLE_INFO 的单独表来实现此目的。
可以获得任何表的列名列表。
此方法也适用于临时表:
SET @columns_string = ''
;
SHOW
COLUMNS
FROM
`mysql`.`user`
WHERE
@columns_string := CONCAT(`Field`, ',', @columns_string)
;
SELECT @columns_string
;
Run Code Online (Sandbox Code Playgroud)
@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,
Run Code Online (Sandbox Code Playgroud)
此解决方案的问题(除了需要解析字符串之外)是该SHOW COLUMNS命令将始终生成(空)结果集。
这意味着您实际上无法在返回 SELECT 的存储过程中使用此方法(您最终将得到多个结果集)。
| 归档时间: |
|
| 查看次数: |
5975 次 |
| 最近记录: |