Mysql 在DB表中返回最多5个“post_类型”

Mysql 在DB表中返回最多5个“post_类型”,mysql,Mysql,我有一个查询,返回DB表中与给定条件匹配的所有帖子,但我正在寻找一种方法,从每个“帖子类型”中最多返回5篇帖子。目前,查询正在选择每一个匹配的帖子,我必须限制PHP中每个“帖子类型”的数量,这不是特别有效 这能做到吗?谢谢 SELECT ID, post_title, post_type FROM wp_posts WHERE 1=1 AND post_status = "publish" AND ( post_type IN ( "staff" ) AN

我有一个查询,返回DB表中与给定条件匹配的所有帖子,但我正在寻找一种方法,从每个“帖子类型”中最多返回5篇帖子。目前,查询正在选择每一个匹配的帖子,我必须限制PHP中每个“帖子类型”的数量,这不是特别有效

这能做到吗?谢谢

SELECT ID, post_title, post_type
FROM wp_posts
WHERE 1=1
AND post_status = "publish"
AND (
    post_type IN (
        "staff"
    )
    AND post_name LIKE "%The%"
)
OR (
    post_type NOT IN (
        "staff",
        "Attachment"
    )
    AND (
        post_name LIKE "%The%"
        OR post_title LIKE "%The%"
    )
)
ORDER BY post_type, post_name ASC

此解决方案将根据每个帖子类型的id选择五个最新帖子:


对于每种类型,您需要哪些帖子?最近的五个?最早的五个?你能发布你的方案吗?非常感谢你的回复。我已经试过了,但是在使用COUNT1时出现语法错误
SELECT     a.id, a.post_title, a.post_type
FROM       wp_posts a
INNER JOIN wp_posts b ON a.post_type = b.post_type AND a.id <= b.id
WHERE      a.post_status = 'publish' AND
           (a.post_type = 'staff' AND a.post_name LIKE '%The%') OR
           (a.post_type NOT IN ('staff', 'Attachment') AND (a.post_name LIKE '%The%' OR a.post_title LIKE '%The%'))
GROUP BY   a.id, a.post_title, a.post_type
ORDER BY   a.post_type, a.post_name
HAVING     COUNT(1) <= 5