SQL语句优化问题

Tal*_*mli 1 mysql sql sorting union

我想在region ='sample'中显示行作为结果中的第一行.我的意思是优先级必须高于另一行,它们必须位于顶部.

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

SELECT * FROM works Where region = 'sample' UNION Select * FROM works Where region <> 'sample'
Run Code Online (Sandbox Code Playgroud)

有没有UNION得到结果的最佳方法?

jue*_*n d 7

你可以使用order:

SELECT * FROM works
order by case when region = 'sample' then 1 else 2 end
Run Code Online (Sandbox Code Playgroud)

如果您希望您的数据也按其他列排序,您可以在最后添加它,如下所示:

order by case when region = 'sample' then 1 else 2 end, othercolumn
Run Code Online (Sandbox Code Playgroud)