使用嵌套查询对行进行排序(查询其他查询的结果)

时间:2018-01-04 07:54:03

标签: mysql sql nested-queries

我有一个表,想要使用嵌套查询对最相关的结果进行排序 我有4列item_name, color, gender, pattern和1 5万行

如果我给了项目名称:衬衫,颜色:白色,性别:女性,图案:实心
即使某些属性没有基于属性

中的优先级的完全匹配,我也想要10个最相关的结果

需要获取与项目名称相匹配的所有行 然后在上面的结果中获取所有匹配性别的行 然后获取上面结果中匹配颜色的所有行
然后获取上述结果中匹配模式的所有行

最后如果结果小于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'
                              )
              )

它不起作用。

1 个答案:

答案 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;