gpt4 book ai didi

php - MySQL - 仅对前 3 行进行排序

转载 作者:可可西里 更新时间:2023-11-01 07:04:06 24 4
gpt4 key购买 nike

我的客户想要在他的 wordpress 网站上进行搜索,显示特定类别(优质产品)的前 3 个结果,然后按相关性对其余结果进行排序。

它需要是这样的:

搜索:青苹果

  1. 绿色菠萝(优质)
  2. 红苹果(优质)
  3. 苹果派(高级)
  4. 青苹果
  5. 大青苹果
  6. 小青苹果

我在想是否有一些东西可以对选定的行进行计数,然后创建如下所示的 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 高级”。

最佳答案

我会使用 UNION 查询来选择 3 个优质产品,然后选择其余产品:

SELECT * 
FROM ((SELECT 1 AS premium, posts.*
FROM posts
WHERE `posts.category` LIKE 'premium'
ORDER BY post_date_desc
LIMIT 3)
UNION
(SELECT 0 AS premium, posts.*
FROM posts)
) p
GROUP BY p.ID
ORDER BY premium DESC, `p.post_date` DESC

UNION 默认情况下会删除重复项,因此它将防止列表中重复相同的帖子。

关于php - MySQL - 仅对前 3 行进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55388497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com