【发布时间】:2019-08-18 16:29:03
【问题描述】:
我的客户希望在他的 wordpress 网站上进行搜索,以显示特定类别(高级产品)的前 3 个结果,然后按相关性对其余结果进行排序。
它必须是这样的:
搜索:青苹果
- 青菠萝(特级)
- 红苹果(特级)
- 苹果派(高级)
- 青苹果
- 大青苹果
- 小青苹果
我在想是否有一些东西可以计算选定的行,然后创建一个如下所示的 OrderBy 条件:
SELECT *
FROM `posts`
ORDER BY (
CASE WHEN `posts.category` LIKE 'premium' AND COUNT(ROW) < 4
THEN 0
ELSE 1
END ),
`posts.post_date` DESC
Obs.:搜索的其余部分(前 3 个溢价之后)需要从字面上选择与搜索匹配的所有内容,这意味着它也可以选择溢价帖子,所以我不能使用“NOT LIKE @987654322 @"。
【问题讨论】:
-
为了代码可读性,我只使用 2 个查询(选择 3 个优质产品并选择所有其他产品)。
-
但是通过选择所有其他产品,它可能会带来我在之前搜索中选择的相同产品。
-
只使用逆向的
WHERE(例如WHERE posts.category != 'premium') -
“第二次搜索”需要从字面上选择与搜索查询匹配的所有内容,因此它也可以包含优质帖子。我不能使用“LIKE NOT”。