0

指定された基準に一致する DB テーブルからすべての投稿を返すクエリがありますが、それぞれから最大 5 件の投稿のみを返す方法を探しています'post_type''post_type'現在、クエリは一致するすべての投稿を選択しており、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
4

1 に答える 1

1

このソリューションは、 ごとに ( に基づく) 最新の 5 つのid投稿を選択しますpost_type:

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
于 2012-07-17T10:13:17.250 に答える