Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
列出mysql中的临时表列_Mysql_Sql - Fatal编程技术网

列出mysql中的临时表列

列出mysql中的临时表列,mysql,sql,Mysql,Sql,我已经创建了一个名为“table1”的临时表。我正在尝试列出临时表的列。我没有得到任何价值。这是我的mysql查询 SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'table2'; 有人帮我吗? 谢谢您无法使用 您可以使用的唯一方法是使用SHOW CREATE TABLE TABLE 2 “INFORMATION\u SCHEMA.COLUMNS”不包含临时表的列。您可以使用SHOW COLU

我已经创建了一个名为“table1”的临时表。我正在尝试列出临时表的列。我没有得到任何价值。这是我的mysql查询

SELECT column_name
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = 'table2';
有人帮我吗?
谢谢

您无法使用

您可以使用的唯一方法是使用
SHOW CREATE TABLE TABLE 2


“INFORMATION\u SCHEMA.COLUMNS”不包含临时表的列。

您可以使用SHOW COLUMNS来实现这一点

示例表:

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
 );
命令: 显示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)
有关更多详细信息,请参阅MySQL 5.7的手册第13.7.5.5节

另一种可能性是使用“显示创建表”:

 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)
这里还有一些


在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
;
@columns\u 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的存储过程中真正使用此方法(您将得到多个结果集)。

请尝试用谷歌搜索它,信息模式不会列出临时表。我对此进行了改进,因为文档中没有提到任何有关临时表的内容。文档中确实说,“目前,TABLES表没有列出临时表。”但同样,这并没有说明COLUMNS表。非常感谢,它非常有用。不幸的是,我只能检查一个答案。如果您在会话中创建一个表,那么您可以访问,但是假设您的应用程序根据用户登录随机创建临时表,那么您无法查看所有会话的表列表。MySQL中的临时表始终仅针对每个会话。[临时表仅在当前会话中可见,并在会话关闭时自动删除。这意味着两个不同的会话可以使用相同的临时表名称,而不会相互冲突或与相同名称的现有非临时表冲突。]这太棒了!可以用作存储过程,以获取任何表的列列表,该列表可以单独使用,也可以在另一个存储过程中使用创建过程
get\u column\u list\u hack
(schema\u name VARCHAR(64),table\u name VARCHAR(64),OUT
column\u list
TEXT)BEGIN SET@cs='';从CONCAT准备show_cols('show COLUMNS FROM',schema_name','table_name','WHERE@cs:=TRIM(“,”FROM CONCAT(@cs,,“,
Field
)));执行show_cols;取消分配准备展示;设置列列表=@cs;结束``哥们,这是纯粹的天才:D