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

sorting rows with nested queries(querying on results of other query)

我有一个 table 并且想使用嵌套查询对最相关的结果进行排序。
我有 4 列 item_name, color, gender, pattern 和 1 50,000 行

如果我给了项目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'
                              )
              )

它不工作。

如果我没理解错的话,你有一个不同列的优先级列表。您可以在每一列上使用 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;