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

gwbalxhn  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(347)

我有一个表,想用嵌套查询对最相关的结果进行排序。
我有4列 item_name, color, gender, pattern 有15万排
如果我已经给了name:shirt, color:white, gender:female, pattern:solid
我想要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'
                              )
              )

它不起作用。

rjjhvcjd

rjjhvcjd1#

如果我理解正确,您有一个不同列的优先级列表。你可以处理这个问题 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;

相关问题