簡體   English   中英

列出mysql中的臨時表列

[英]List temporary table columns in mysql

我創建了一個名為“table1”的臨時表。 我想列出臨時表的列。 我沒有得到任何價值觀。 這是我的mysql查詢。

SELECT column_name
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = 'table2';

有人幫我嗎? 謝謝

您無法使用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
 );

命令:顯示來自SalesSummary的列;

Outout:

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.5節,適用於MySQL 5.7。 鏈接

另一種可能是使用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)

這里有一些更多的細節

在Mysql 5.7中有一個名為INNODB_TEMP_TABLE_INFO的獨立表來實現此目的。

可以獲取任何表的列名列表。

此方法也適用於TEMPORARY表:

SET @columns_string = ''
;

SHOW
    COLUMNS
FROM
    `mysql`.`user`
WHERE
    @columns_string := CONCAT(`Field`, ',', @columns_string)
;

SELECT @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的存儲過程中真正使用此方法(最終將使用多個結果集)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM