我想将 region = 'sample' 的行显示为结果中的第一行。我的意思是优先级必须高于其他行,并且它们必须位于顶部。
我使用下面的 SQL 来获得这个结果。
SELECT * FROM works Where region = 'sample' UNION Select * FROM works Where region <> 'sample'
没有UNION,有什么最佳方法可以得到结果吗?
您可以使用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
SELECT * FROM works
order by case region when 'sample' then 1 else 2 end;
也许它会帮助你...
首先联盟不会保证秩序。即使你这样做,也有可能不按正确的顺序。因此,您必须使用 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