如何在mysql中加权'ORDER BY'?

时间:2012-04-23 19:33:40

标签: mysql sql sql-order-by

我的全文查询以:

结尾
 ORDER BY RELEVANCE DESC, CLICK_RATE DESC

我可以为order by中的列赋予权重吗?可能0.3与相关性和0.7click_rate

就目前而言,即使我转换它们,结果也不尽如人意。

作为替代方案,如何将3个结果按CLICK RATE排序,其余按relevance排序。

2 个答案:

答案 0 :(得分:9)

这应该有效

ORDER BY (.3 * RELEVANCE) + (.7 * CLICK_RATE) DESC

DEMO

从评论中更新

  

按top_rate排序前3个结果,其余按相关性排序

您需要首先使用子查询识别前3个并执行排序

SELECT test.id, 
       test.relevance, 
       test.click_rate, 
       top_3_click_rate.id         t3_id, 
       top_3_click_rate.click_rate t3_click_rate 
FROM   test 
       LEFT JOIN (SELECT id, 
                         click_rate 
                  FROM   test 
                  ORDER  BY click_rate DESC 
                  LIMIT  3) top_3_click_rate 
         ON test.id = top_3_click_rate.id 
ORDER  BY top_3_click_rate.click_rate DESC, 
          test.relevance DESC 

DEMO

答案 1 :(得分:-2)

您可以随时使用WHERE。

试试这个: 何处相关> 0.3和相关性< 0.7相关的DESC命令,CLICK_RATE DESC