怎样将两条sql语句(sql1,sql2)查询的结果,(前提是查询的字段相同)合并到一起.

来源:百度知道 编辑:UC知道 时间:2024/06/27 15:09:29
并且sql1结果在sql2结果前面其结果也不变,请赐教
我也用union的确能合并到一块.但怎样能保证顺序不变了,并且sql1结果在sql2结果前面其结果也不变
我这两个sql语句都是经过排序得的,合并以后无需在排序.就是在排序,合并的字段里没有我要排序的字段

1.记录顺序在没有排序或索引的情况下,没有任何保障,所以,您最好保留排序字段。
所以,建议您,使用排序字段或索引以保证固定的查询顺序。

2.给你一个查询,不动单个查询内的顺序,只给SQL1的结果集与SQL结果集的顺序:(通过辅助排序字段)

SELECT *,0 AS SN FROM TABLENAME--sql1
UNION ALL
SELECT *,1 AS SN FROM TABLENAME--sql2
ORDER BY SN

如果不想多出一个SN,可以这样:
select field1,field2,field3 from
(
SELECT *,0 AS SN FROM TABLENAME
UNION ALL
SELECT *,1 AS SN FROM TABLENAME
)
ORDER BY SN

很简单啦,用union就行了,写法大致如下:
sql1
union
sql2

要保持顺序不变,那么就构造一个排序的ID列啊,比如orderid,在查询是硬性插入值,用于排序:

参考例子:
create table #t(a int,b int,c int,d int)
insert #t
select 1, 2, 3, 4 union all
select 5, 6, 7, 8

select a,b,c,0 as d , 1 as orderid from #t
union
select a,b,0 as c,d , 2 as orderid from #t
order by orderid

这样就可以保证查询1在查询2之前啦。
明白了吗,楼主。

使用UNION ALL就不会排序了,但是UNION ALL也不会去掉重复行
select t.A, t.B , t.C from t1 t
UNION AL