Mysql SQL分配";“共同效率”;查询条件并使用它们对结果进行排序

Mysql SQL分配";“共同效率”;查询条件并使用它们对结果进行排序,mysql,sql,sql-order-by,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)

我曾经看到一个查询为查询条件分配了某种排序,现在我记不起来了

按照我的理解,我认为变量名(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)
因此,不同的数字排序给出了顺序中不同重要程度的条件,使得它非常适合进行相关的产品/帖子搜索


请问,有人知道这个查询的正确结构吗?

在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);

t.*是什么意思?@iKey。是现在已定义的表别名。