读书人

select.union all .where.解决方案

发布时间: 2012-01-02 22:40:04 作者: rapoo

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

读书人网 >SQL Server

热点推荐