我有一个表,想要使用嵌套查询对最相关的结果进行排序
我有4列item_name, color, gender, pattern
和1 5万行
如果我给了项目名称:衬衫,颜色:白色,性别:女性,图案:实心
即使某些属性没有基于属性
需要获取与项目名称相匹配的所有行
然后在上面的结果中获取所有匹配性别的行
然后获取上面结果中匹配颜色的所有行
然后获取上述结果中匹配模式的所有行
最后如果结果小于10,那么我们需要显示以前的查询剩余
我尝试了以下
select product_type
from product_feeds
WHERE color = 'black'
AND color IN (select color
from product_feeds
WHERE gender = 'female'
AND (gender) IN (SELECT gender
FROM product_feeds
WHERE product_type = 'Jeans & Leggings'
)
)
它不起作用。
答案 0 :(得分:2)
如果我理解正确,您有不同列的优先级列表。您可以在每列上使用order by
处理此问题:
select pf.product_type
from product_feeds pf
order by (pf.product_type = 'Jeans & Leggings') desc,
(pf.gender = 'female') desc,
(pf.color = 'black') desc,
(pf.patten = ?) desc
limit 10;