这里有点复杂的SQL问题。
我目前有一个与多个字段匹配的SELECT语句,就像这样。
SELECT field1, field2, field3, field4, field5
FROM table
WHERE field1 = 'variable 1'
AND field2 = 'variable 2'
AND field3 = 'variable 3'
AND field4 = 'variable 4'
AND field5 = 'variable 5'
我想修改该语句,以使其使用OR而不是AND,从而选择与任何字段匹配的所有记录。
下一步是使用评分系统对结果进行排名。
If field 1 was matched then 1000 is added to the score
If field 2 was matched then 800 is added to the score
If field 3 was matched then 600 is added to the score
If field 4 was matched then 10 is added to the score
If field 5 was matched then 1 is added to the score
所以…
匹配1-如果field2和field 3匹配,则得分为1400
匹配2-如果field1和field 4匹配,则得分将为1010
比赛1将在结果顶部。
对于使用SQL实现此目标的任何帮助,我们将不胜感激。
尝试:
SELECT
....
FROM ....
ORDER BY
(CASE WHEN field1 = 'variable 1' THEN 1000 ELSE 0 END
+CASE WHEN field2 = 'variable 2' THEN 800 ELSE 0 END
+CASE WHEN field3 = 'variable 3' THEN 600 ELSE 0 END
+CASE WHEN field4 = 'variable 4' THEN 10 ELSE 0 END
+CASE WHEN field5 = 'variable 5' THEN 1 ELSE 0 END
) DESC
问题内容: 我有一个包含5个整数ID的表,并想添加一列以接受这些ID,对其进行排序并以类似于以下内容的方式将它们连接起来。 是否有使订购更快更轻松的功能?上帝禁止我必须手动编写订单。 问题答案: 您也可以使用(在线演示)
问题内容: 我的测试似乎证实了 映射到,即字段仅按顺序位置匹配,而不按名称匹配。总是这样吗,也就是说,我可以依靠这种行为吗?不幸的是,文档没有对此进行指定(或者我没有找到它)。 问题答案: 没错,SQL Server不会尝试对列名称进行任何映射,因为您可以将任何别名应用于所需的源数据。它将始终参考顺序位置。
问题内容: 我有一个用户模型和一个提交模型。每个提交都有一个上载用户的外键字段user_submitted。 我的问题很简单:如何获得提交量最多的三个用户的列表? 我尝试在用户模型上创建num_submissions方法: 然后执行: 但这失败了,就像我尝试过的所有其他尝试一样。我实际上可以使用智能数据库查询吗?还是我应该在视图文件中做些更怪异的事情? 问题答案: 你没有在示例模型代码中提及,但在
问题内容: 如何获得按字段排序的struct输出? 问题答案: A 是字段的 有序 集合。该包使用反射来获取值的字段和值,并按照定义它们的顺序生成输出。 因此,最简单的解决方案是在已经按字母顺序排列字段的位置声明类型: 如果您不能修改字段的顺序(例如,内存布局很重要),则可以通过为结构类型指定一个方法来实现接口: 所述包检查所传递的值工具,并且如果是的话,调用它的方法,以产生输出。 该解决方案的缺
问题内容: 当我使用IN从表中选择一组行时,例如 有一种SQL技巧可以按照IN集合中给定的顺序恢复它们吗? 因此,在示例中,假设x具有ID为23、55、44和12的行,则将按该顺序返回这四行。 问题答案:
问题内容: 有没有一种方法可以使我按照WHERE命令中要求的顺序使mysql从成员数据库返回结果? 目前,无论我做什么,它将返回MemberID ASC排序的结果。我希望它能按我要求的顺序返回6,3,5。 问题答案: