在mysql中按最近的值排序

时间:2012-03-12 08:20:40

标签: mysql

需要针对以下搜索功能进行优化查询

产品表

Product      att1   att2      att3    att4    att5

p1            1       2         2       3       2
p2            4       1         1       5       5
p3            5       3         5       3       2
p4            4       4         2       1       1

如果用户搜索att1 = 3,att2 = 2且att3 = 5

然后,我们需要按最大可能的顺序显示所有记录 所有必需属性的评级

注意: - 在第一行中只找到一个可能的匹配项。     - 在第二排没找到,     - 在第三行找到一个匹配

所以根据匹配的数量,我们需要订购记录, 如果未找到完全匹配,则在搜索上放松 元素

1 个答案:

答案 0 :(得分:3)

select * from product
order by (att1 = 3) + (att2 = 2) + (att3 = 5) desc

这是有效的,因为在mysql true1false0,所以汇总条件会为您提供匹配的搜索条件数。订购desc会返回“最接近匹配”