通过左连接现有行的MYSQL顺序

时间:2018-08-06 13:12:45

标签: php mysql doctrine

我有餐桌产品,我需要通过两种不同的方式在餐桌上进行搜索。

例如搜索查询为“黄包”

我接受此查询,找到了一些类别和颜色并将其返回。然后我有

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
...

感谢帮助

1 个答案:

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

;