当前位置: 首页 > 面试题库 >

首先按特定字段值排序

令狐昂雄
2023-03-14
问题内容

我有一个包含3列的表格:

id | name | priority
--------------------
 1 | core  |   10
 2 | core  |   9
 3 | other |   8
 4 | board |   7
 5 | board |   6
 6 | core  |   4

我想使用以下顺序来排序结果集,priority但首先name=core要优先考虑那些具有较低优先级的行。结果应如下所示

id | name | priority
--------------------
 6 | core  |   4
 2 | core  |   9
 1 | core  |   10
 5 | board |   6
 4 | board |   7
 3 | other |   8

问题答案:

还有MySQL FIELD函数

如果要对所有可能的值进行完整排序:

SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core", "board", "other")

如果您只关心“核心”在前,而其他值则无关紧要:

SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC

如果要先按“核心”排序,然后按正常排序顺序按其他字段排序:

SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority

不过,这里有一些警告:

首先,我很确定这是仅mysql的功能-问题被标记为mysql,但您永远不会知道。

其次,注意其FIELD()工作原理:它返回值的从 一开始的索引 -在的情况下FIELD(priority, "core"),如果“
core”是值,则返回1。如果该字段的值不在列表中,则返回 。这就是为什么DESC除非您指定所有可能的值,否则是必需的。



 类似资料:
  • 问题内容: 在Rails 3.2中,是否有任何便捷的方法通过将具有特定字段的特定值的记录移动到关系的前面来订购ActiveRecord关系?例如,如果有一个attribute ,我想对任何查询返回的关系进行排序,其中记录必须位于该关系的前面。 问题答案: 这样的事情。显然,“名称,ID”将取决于您的型号和要求。

  • 问题内容: 是否可以使用预定义的一组列值(ID)按“ order by”在mysql中排序,例如:order by(ID = 1,5,4,3),因此我会在其中得到记录1、5、4、3订购吗? 更新: 关于滥用mysql ;-)我必须解释为什么我需要这个… 我希望记录每5分钟随机更改一次。我有一个cron任务来执行更新表,以在其中放置不同的随机排序顺序。只有一个问题!分页。我将有一位访问者来到我的页面

  • 我有一个列表: 如何首先按DESC顺序对列表进行排序,然后我想让状态为的元素作为第一个(然后是状态为其他的元素),比如:

  • 问题内容: 我有一个带有“标题”字段的表,该字段是varchar2,我想选择所有行,然后按通常的顺序先按数字然后按字母对它们进行排序。 例如,我目前最后使用一个简单的代码: 美国广播公司 国防部 321 但是我想要这个: 321 美国广播公司 国防部 奇怪的是,SQL Developer显示“正确”的顺序,以数字开头。但是在我的应用程序(使用OCI8的PHP)上,它最后显示数字。 问题答案: 不是

  • 我有一篇有三个元域的帖子。 我想查询这个类别,并根据其中一个的元字段值对帖子进行排序。我现在使用的参数是: 其中times是元字段的名称。上面的代码没有返回任何内容。

  • 问题内容: 可以说我有下表。 我想得到所有的朋友,但我希望ID 5成为列表中的第一项。我不在乎我收到其余物品的顺序。 所需的查询结果将是: 我怎样才能做到这一点? 使用Mysql5.1.x。 谢谢! 问题答案: (假设您不关心其余的顺序,否则,例如, 通过id asc进行休息 )