1

我想将 region = 'sample' 的行显示为结果中的第一行。我的意思是优先级必须高于其他行,并且它们必须位于顶部。

我使用下面的 SQL 来获得这个结果。

SELECT * FROM works Where region = 'sample' UNION Select * FROM works Where region <> 'sample'

没有UNION,有什么最佳方法可以得到结果吗?

4

3 回答 3

7

您可以使用order

SELECT * FROM works
order by case when region = 'sample' then 1 else 2 end

如果您希望您的数据也按另一列排序,您可以在末尾添加它,如下所示:

order by case when region = 'sample' then 1 else 2 end, othercolumn
于 2012-09-23T17:08:23.230 回答
1
SELECT * FROM works 

order by case region when 'sample' then 1 else 2 end;

也许它会帮助你...

于 2012-09-23T17:08:35.927 回答
1

首先联盟不会保证秩序。即使你这样做,也有可能不按正确的顺序。因此,您必须使用 order by 子句来做到这一点。

简单的

select * from work order by case when region='sample' then 0 else 1 end

如果你有一个关于区域的索引会更好

select *,0 as ordb from work where region = 'sample'
union
select *,1 as ordb from work where region <> 'sample'
order by ordb
于 2012-09-23T17:09:23.727 回答