日期:2014-05-19  浏览次数:20393 次

select...union all ...where..
sql中.假设有两个表tbl1跟tbl2,表结构完全相同,表里面有一个datetime类型的字段t,我想把两张表同一时间段的行全取出来,可以这样写的:select   *   from   tbl1   where   t> datetime1   and   t <datetime2   union   all   select   *   from   tbl2   where   t> datetime1   and   t <datetime2,     这里的where条件对于两个表都是一样的,但在写程序时,这个条件是在后期才加上去的,即先是有select   *   from   tbl1   union   all   select   *   from   tbl2,   再加上where   t> datetime1   and   t <datetime2,   这时,   select   *   from   tbl1   union   all   select   *   from   tbl2   where   t> datetime1   and   t <datetime2   在sql中执行时where条件只会用于tbl2,而不用于tbl1(在sql测试过了,在access中可能同时用于两个表).   我也想过这样写,   select   *   from   tbl1,   tbl2     再加上   where   t> datetime1   and   t <datetime2,   但这时会报错说t不明确.   请问,如何实现这种效果呢?

------解决方案--------------------
--试试
select *
from(
select * from tbl1
union all
select * from tbl2
) _x
where t> datetime1 and t <datetime2