如果这似乎不是一个合适的 SO 问题,我提前道歉。但是,我在其他任何地方都找不到答案。
我希望能够通过一种算法对结果进行排序,该算法使用规则根据不同的列或变量对结果进行排名。我的直觉是,使用内置的 MYSQL ORDER BY 比操作返回的记录集合要快得多。我在 MYSQL 中使用索引来加快对一个字段或两个字段的排序。但是我不知道如何创建一个规则或公式来对两个字段进行加权,并对权重进行优先级排序和施加逻辑。
例如: 假设我有一张评论表。我想创建一个算法,根据不同变量的组合权重和一些逻辑对这些评论进行排序。
如示例:返回今天首先编辑的结果。对于所有其他结果,50% 的回报取决于作者的声誉,50% 的回报取决于评论的创建时间。
表评:
id|reviewtext|lastedited|datecreated|authorid
表作者
id|name|reputation
MYSQL/PHP:
$SQL = "SELECT r.*, a.* FROM `reviews` r
LEFT JOIN `authors` a
on = r.authorid= a.id
WHERE reviewtext LIKE '%str%'
ORDER BY lastedited DESC datecreated DESC reputation DESC";
将首先按 lastedited 排序,然后按 datecreated 等排序。
如何使用具有逻辑权重等的更复杂的公式?
在此先感谢您的任何建议。