SQL Assign"系数"查询条件并使用它们来排序结果

时间:2015-03-09 23:27:02

标签: mysql sql sql-order-by

我看到一个查询,它为查询条件分配了某种排名,我现在不记得了。

他们理解它,我认为变量名称(s1,s2,...)被分配给每个条件,系数给它们不同的“权重”,然后变量的总和用于排序结果。

它看起来像这样:

SELECT 
  * 
FROM 
  table_name 
WHERE condition1='value1' as (s1*3) 
   OR condition2='value2' as (s2*2) 
   OR condition3='value3' as (s3*1) 
ORDER BY (s1+s2+s3)

因此,不同的数字类型赋予ORDER不同程度的条件,使其成为相关产品/帖子搜索的理想选择。

请问,有没有人知道此查询的正确结构?

1 个答案:

答案 0 :(得分:1)

在MySQL中,您将在SELECT子句中定义别​​名,然后在ORDER BY中使用它们。例如:

SELECT t.*, (condition1 = 'value1') as s1, 
       (condition2 = 'value2') as s2,  (condition3 = 'value3') as s3
FROM table t
ORDER BY (s1*3 + s2*2 + s3*1);