I need to find the latest post for each author and then group the results so I only a single latest post for each author.
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
This is correctly grouping the output so I only get one post per author, but it is ordering the results after they have been grouped and not before they have been selected.
it doesn't matter if you order before or after the group-statement, because order means only that 213 goes to 123 or 321 and not more. group by takes only SOME entry per column, not only the latest. I consider you working with subselects here like
What do you think about this?? Seems to work for me
It brings me all the Authors with the most updated post_date ... Do you identify a problem there?? I don't
Do a GROUP BY after the ORDER BY by wrapping your query with the GROUP BY like this:
When our table became large, performance need to checked also. I checked all the options in the questions here, with a PM system with a 136K messages and link table with 83K rows.
When you need only count, or only IDs - Alex's solution is the best.
When you need other fields, I need to modify Husky110 solution (to my table design - here it is only example - not checked), that in my tables 10x faster than the subquery option:
This change can select more than one post (one for user, for example), and can be modified to other solutions.
Moshe.
I think that @edze response is wrong.
In the MySQL manual you can read:
Two great references:
Sorry, but I can not comment the @edze response because of my reputation, so I have written a new answer.