mysql order by left连接现有行

busg9geu  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(359)

我有表产品,我需要在表中搜索两种不同的方式。
例如,搜索查询为“黄包”
我接受这个查询,找到一些类别和颜色并返回它。那我有

SELECT * FROM products where color = color AND categories IN (...) etc..

它的工作很好,但有时我得到很多结果,我需要使用这样的东西

SELECT * FROM products WHERE name LIKE %yellow% AND name LIKE '%bag%' ...

我想把这个选出来作为订货人。因此,我需要告诉我所有结果的第一个选择和秩序存在的结果建立在第二个查询。
因为第二个查询非常简单,我只想将其用作helper select。
我用的是条令查询生成器。
示例数据

SELECT * FROM products WHERE color = yellow AND categories IN (1,2);

1 | YELLOW valise
2 | YELLOW something
3 | YELLOW BAG ------ > this is most relevant result
4 | YELLOW SOMETHING

SELECT * FROM products WHERE name LIKE '%Yellow bag%';

3 | YELLOW BAG

我需要这个输出

3 | YELLOW BAG
1 | YELLOW valise
2 | YELLOW something
...

谢谢你的帮助

snvhrwxg

snvhrwxg1#

只需一个查询即可:

SELECT * 
FROM products 
WHERE color = yellow AND categories IN (1, 2)
ORDER BY CASE WHEN name LIKE '%yellow%' AND name LIKE '%bag%' 
              THEN 1
              ELSE 2
         END,
         name

;

相关问题