我有餐桌产品,我需要通过两种不同的方式在餐桌上进行搜索。
例如搜索查询为“黄包”
我接受此查询,找到了一些类别和颜色并将其返回。然后我有
SELECT * FROM products where color = color AND categories IN (...) etc..
它工作正常,但是有时我会得到很多结果,我需要使用类似的东西
SELECT * FROM products WHERE name LIKE %yellow% AND name LIKE '%bag%' ...
,此SELECT我想按AS顺序使用。所以我需要通过第一个SELECT告诉GIVE ME ALL结果,并在第二个查询中建立ORDER BY存在结果。
因为第二个查询非常简单,我只想将其用作帮助选择。
我正在使用Doctrine查询生成器。
示例数据
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
...
感谢帮助
答案 0 :(得分:1)
您可以通过一个查询来做到这一点:
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
;