ここには同様の質問がたくさんありますが、質問に対する適切な回答はないと思います。
私は現在最も人気のある質問から続けて、それが問題なければ、その例を使用します。
このインスタンスのタスクは、データベース内の各著者の最新の投稿を取得することです。
クエリ例では、常に最新の投稿が返されるとは限らないため、使用できない結果が生成されます。
SELECT wp_posts.* FROM wp_posts
WHERE wp_posts.post_status='publish'
AND wp_posts.post_type='post'
GROUP BY wp_posts.post_author
ORDER BY wp_posts.post_date DESC
現在受け入れられている答えは
SELECT
wp_posts.*
FROM wp_posts
WHERE
wp_posts.post_status='publish'
AND wp_posts.post_type='post'
GROUP BY wp_posts.post_author
HAVING wp_posts.post_date = MAX(wp_posts.post_date) <- ONLY THE LAST POST FOR EACH AUTHOR
ORDER BY wp_posts.post_date DESC
残念ながら、この答えは明白で単純な誤りであり、多くの場合、元のクエリよりも安定した結果が得られません。
私の最善の解決策は、フォームのサブクエリを使用することです
SELECT wp_posts.* FROM
(
SELECT *
FROM wp_posts
ORDER BY wp_posts.post_date DESC
) AS wp_posts
WHERE wp_posts.post_status='publish'
AND wp_posts.post_type='post'
GROUP BY wp_posts.post_author
私の質問は単純です: とにかく、サブクエリに頼らずにグループ化する前に行を並べ替えることはできますか?
編集:この質問は別の質問の続きで、私の状況の詳細は少し異なります。特定の投稿の一意の識別子であるwp_posts.idもあると想定できます(想定する必要があります)。
There are plenty of similar questions to be found on here but I don't think that any answer the question adequately.
それが賞金の目的です。
post_author
でpost_date
はないため、一意の行を取得するにはさらに多くのものが必要ですpost_author