我想查询一些数据,但是根据收集数据的月份(例如201301,201302)将数据分配到不同的表中。我可以尝试通过从我需要的所有表中进行联合来查询表。这就是我到目前为止所拥有的......
select * from table_2013_01
where user_id = 39858
UNION ALL
select * from table_2013_02
where user_id = 39858
UNION ALL
.
.
.
select * from table_2014_01
where user_id= 39858
order by date asc
我的问题是:
注意: 我只有DB的读取权限。我甚至无法创建临时表。
答案 0 :(得分:1)
如果你可以在user_id上创建/放置索引(看来你在where子句中没有任何其他参数),那么检索会更快,然后就可以了
select * from (
select * from table_2013_01
where user_id = 39858
UNION ALL
select * from table_2013_02
where user_id = 39858
UNION ALL
.
.
.
select * from table_2014_01
where user_id= 39858
) t order by date asc;
如果您有权创建过程,那么您不需要手动编写这些查询,您可以创建动态SQL(字符串说* final_sql *)并可以运行它:
PREPARE stmt FROM @final_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
答案 1 :(得分:0)
尝试这样的事情:
select *
from (select * from table_2013_01
union all
select * from table_2013_02
union all
select * from table_2013_03) a
where a.user_id = 12212;