我想用一些数据集创建临时表,以便对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;
还有其他更简洁的方法来做这样的表吗?
答案 0 :(得分:0)
有些人喜欢创建永久性的辅助表,如数字序列或日期,然后在查询中引用它们。其他数据库系统允许更简洁的递归CTE。
您可以编写一个存储过程,可以更简洁地循环和创建临时表。
虽然有点愚蠢的建议,但您提供的SQL不需要" AS Date"除了第一次选择派生表之外,你应该使用UNION ALL而不是UNION。