2014-05-02 46 views
1

如何使用select给定列名创建临时表?如何用选择的给定列名创建临时表?

我的意思是这样(我把“为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 |  | 
+-------------------+------------------+------+-----+---------+-------+ 

回答

2

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) 
+0

哦,真的)我测试了它错误。谢谢。 – klm123