如何以简洁的方式创建辅助表?

时间:2015-03-11 15:40:42

标签: mysql sql

我想用一些数据集创建临时表,以便对mysql DB执行更复杂的查询。

我认为有两种可能的方法。

创建表并插入每一行:

 create temporary table dates  (
     date date not null
 );

 insert into dates values ('2010-01-01');
 insert into dates values ('2010-02-01');
 insert into dates values ('2010-03-01');

或创建就地表:

select * 
from (
    select '2010-01-01' as date
    union select '2010-02-01' as date
    union select '2010-03-01' as date
) as dates;

还有其他更简洁的方法来做这样的表吗?

1 个答案:

答案 0 :(得分:0)

有些人喜欢创建永久性的辅助表,如数字序列或日期,然后在查询中引用它们。其他数据库系统允许更简洁的递归CTE。

您可以编写一个存储过程,可以更简洁地循环和创建临时表。

虽然有点愚蠢的建议,但您提供的SQL不需要" AS Date"除了第一次选择派生表之外,你应该使用UNION ALL而不是UNION。