显示列表
 Union的用法2008-07-08

Union
把多次查询的结果合并成一个表返回。


Select [ID],[Name] From [T1]
Union
Select [ID],[Name] From [T2]

[T1]和[T2]的结构可以不一样,但查询的字段类型要一样。

Union:不用 Order By 时,自动对返回结果排序。
Union All:不用 Order By 时,不对返回结果排序。


例子
如 [T1] 表记录很多,在查询时,如果使用 Order By 会严重影响查询速度

方法1
Select [ID],[Name] From [T1] Where [ClassID]=1 Order By [IsPayment] Desc


方法2
创建一个视图
Create View [V_T1_IsPayment] As Select * From [T1] Where [IsPayment]=1

Select [ID],[Name] From [V_T1_IsPayment] Where [ClassID]=1
Union All
Select [ID],[Name] From [T1] Where [ClassID]=1 And [IsPayment]=0

这样,就不用 Order By 使 IsPayment=1 的排在前面
方法1和方法2查询的结果是一样的,但方法2速度会快,省了排序的时间。
ClassID、IsPayment 都要建索引。



返回摘要 | 分类(MSSQL) | 访问(223) | 编辑