SQL 分配 "co-efficients" 给查询条件并使用它们对结果进行排序
SQL Assign "co-efficients" to query conditions and use them to sort result
曾经看到过一个查询,给查询条件分配了某种排名,现在想不起来了。
他们是我理解的方式,我认为变量名 (s1,s2,...) 被分配给每个条件,并赋予它们不同的系数 "weights" 然后变量的总和是用于对结果进行排序。
看起来像这样:
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 中赋予条件不同程度的重要性,使其非常适合进行相关 product/post 搜索。
请问有人知道这个查询的正确结构吗?
在 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);
曾经看到过一个查询,给查询条件分配了某种排名,现在想不起来了。
他们是我理解的方式,我认为变量名 (s1,s2,...) 被分配给每个条件,并赋予它们不同的系数 "weights" 然后变量的总和是用于对结果进行排序。
看起来像这样:
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 中赋予条件不同程度的重要性,使其非常适合进行相关 product/post 搜索。
请问有人知道这个查询的正确结构吗?
在 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);