mysql - SQL 将 "co-efficients"分配给查询条件并使用它们对结果进行排序

标签 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 中赋予条件不同程度的重要性,使其非常适合进行相关产品/帖子搜索。

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

最佳答案

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

关于mysql - SQL 将 "co-efficients"分配给查询条件并使用它们对结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28953589/

相关文章:

具有不同记录的 SQL 增量计算

android - SQLite 是否保证结果的顺序与表相匹配?

mysql - 当所有列都具有相同日期时,SQL 如何重新排列按日期排序的查询结果

java - 为什么阿拉伯字母没有插入数据库?

php - mysql php函数没有返回值

mysql - 2 左加入工会

sql - 如何选择属性名称 (fn :local-name() with xquery

MySQL 'Order By' - 正确排序字母数字

PHP无限子菜单,无法使用pdo获取一些 parent

php - 根据观看次数、分辨率和文件大小计算视频的传出流量