【问题标题】:How to create temporary table with given column names from select?如何从选择中创建具有给定列名的临时表?
【发布时间】:2014-05-02 13:16:17
【问题描述】:

如何从 select 中创建具有给定列名的临时表?

我的意思是这样的(我放“as newData”只是为了说明这个想法,这是行不通的):

 CREATE TEMPORARY TABLE IF NOT EXISTS tmp AS
 SELECT id, min(data) as newData FROM myTable WHERE id > 100 GROUP BY id;

所以我可以得到一个像这样的表:

+-------------------+------------------+------+-----+---------+-------+
| Field             | Type             | Null | Key | Default | Extra |
+-------------------+------------------+------+-----+---------+-------+
| id                | int(10) unsigned | NO   |     | 0       |       |
| newData           | int(10) unsigned | YES  |     | NULL    |       |
+-------------------+------------------+------+-----+---------+-------+

问题是如果我直接建表,第二个字段名包含禁止符号,不知道怎么用:

+-------------------+------------------+------+-----+---------+-------+
| Field             | Type             | Null | Key | Default | Extra |
+-------------------+------------------+------+-----+---------+-------+
| id                | int(10) unsigned | NO   |     | 0       |       |
| min(data)         | int(10) unsigned | YES  |     | NULL    |       |
+-------------------+------------------+------+-----+---------+-------+

【问题讨论】:

    标签: mysql temp-tables create-table


    【解决方案1】:

    as newData 按您的预期工作;

    mysql> CREATE TABLE myTable (
      id INT NOT NULL DEFAULT 0,
      data INT
    );
    
    mysql> CREATE TEMPORARY TABLE tmp AS
             SELECT id, min(data) as newData FROM myTable WHERE id > 100 GROUP BY id;
    
    mysql> desc tmp;
    +---------+---------+------+-----+---------+-------+
    | Field   | Type    | Null | Key | Default | Extra |
    +---------+---------+------+-----+---------+-------+
    | id      | int(11) | NO   |     | 0       |       |
    | newData | int(11) | YES  |     | NULL    |       |
    +---------+---------+------+-----+---------+-------+
    2 rows in set (0.01 sec)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多