【发布时间】:2011-10-03 18:25:02
【问题描述】:
我有一个问题:
select * from (select top 100 percent ... from [table]
where [field1] is not null
order by [field1]) a
union all
select * from (select top 100 percent ... from [table]
where [field1] is null
order by [field2]) b
子查询对其结果进行了正确排序。我想要第一个子查询的确切结果,然后是第二个子查询的确切结果。但是,我实际上是以某种奇怪的方式排序的连接结果,我什至无法从中辨别出其中的模式。我的 [field2] 值显然是随机散布在结果集中的。
如何在顶部获取第一个查询结果,在底部获取第二个查询结果?
编辑:澄清一下,我希望顶部查询按其自身条件排序,然后我希望底部查询按其自身条件排序。
【问题讨论】:
-
top 100 percent对我来说似乎没什么用...... -
@Rahul:然后我得到“关键字'union'附近的语法不正确”。
-
@Daniel:在子查询中放置 ORDER BY 时必须指定 TOP。我不知道为什么。
-
@tsilb:我不这么认为。例如,请参阅here。
-
@tslib,我的错误......对不起......如果要订购,该字段必须处于选择状态