需要针对以下搜索功能进行优化查询
产品表
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
然后,我们需要按最大可能的顺序显示所有记录 所有必需属性的评级
注意: - 在第一行中只找到一个可能的匹配项。 - 在第二排没找到, - 在第三行找到一个匹配
所以根据匹配的数量,我们需要订购记录, 如果未找到完全匹配,则在搜索上放松 元素
答案 0 :(得分:3)
select * from product
order by (att1 = 3) + (att2 = 2) + (att3 = 5) desc
这是有效的,因为在mysql true
中1
而false
是0
,所以汇总条件会为您提供匹配的搜索条件数。订购desc
会返回“最接近匹配”