MySQL:按与ID配对的常量排序

时间:2014-05-16 13:58:05

标签: mysql

我们有一个Apache Solr实例,它返回一个表的ID以及一个分数。记录如下:

<doc>
    <int name="entity_id">13686</int>
    <float name="score">2.6653142</float></doc>
  <doc>
    <int name="entity_id">16506</int>
    <float name="score">2.5128825</float></doc>
<doc>

我们已经存在一个SQL查询(这是更大的ORM框架的一部分)。我们需要在结果的entity_id部分过滤集合。到目前为止,我们使用了一个表,我们存储了从Solr实例收到的所有记录,然后根据附加的score加入和排序。

然而,经过一些考虑后,我们处于存储在我们加入的表中的数据非常易变,它只用于单个连接,然后在执行新搜索时被删除(Solr实例索引)可以在平均时间内改变)。因此,我们希望完全跳过表开销,并通过使用聪明的SQL以某种方式获得相同的功能。

对于entity_id来说,

是非常微不足道的
entity_id IN (<list of entity_ids)

但是,现在我们需要按score部分生成排序。检查文档我使用SORT BY SQL无法看到任何方法。

有没有办法按某个常量列表对MySQL查询进行排序?

1 个答案:

答案 0 :(得分:0)

您可以使用field()结合订单

来执行此操作
order by field(someothercol,'const1','const2'...);