【问题标题】:MySQL ORDER BY CASE + operatorMySQL ORDER BY CASE + 运算符
【发布时间】:2019-03-17 14:29:16
【问题描述】:

我正在尝试进行按相关性排序的搜索。 假设搜索词包含 3 个词:A、B 和 C。我要做的是检查搜索词是否存在于 SELECT 结果中,如果是,则会增加其排名。

ORDER BY CASE
(
WHEN search_word_A_is_present THEN +1
WHEN search_word_B_is_present THEN +1
WHEN search_word_C_is_present THEN +1
ELSE 0
END
) 
DESC

虽然没有语法错误并且搜索运行并按某些东西排序(这似乎与我想要的不同)但我不确定如果有什么要添加的话。我将如何查看每个结果的最终排名(总和)?这是正确的做法吗?

【问题讨论】:

    标签: mysql sql-order-by case


    【解决方案1】:

    由于在 MySQL 布尔条件中导致 10,您可以简单地将它们相加

    ORDER BY search_word_A_is_present + search_word_B_is_present + search_word_C_is_present 
    DESC
    

    一个更实际的例子:

    ORDER BY col1 = 1 + col2 = 'A' + col3 = 44 DESC
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 2021-07-14
      相关资源
      最近更新 更多