0

我有那个基础:http ://sqlfiddle.com/#!2/e5a24/2,它是 WordPress 默认模式的简写。我已经删除了该示例不需要的字段。

如您所见,在结果中我有两倍的“类别 1”。我喜欢做的是只获取“Category 1”的最新实例。

该 SQL 的正确结果如下:

POSTID  POSTTITLE   CATEGORYID  CATEGORYNAME    DATE
--------------------------------------------------------------
2   2st Game    2   Category 2  January, 01 2013 00:00:00+0000
3   1st Game    1   Category 1  January, 15 2013 00:00:00+0000

我已经尝试按“CategoryID”分组,但是虽然我在结果中只获得了类别 1 的一个实例,但我得到的是较旧的,而不是属于“类别 1”的最早记录。

对此有任何想法,我该如何解决?

4

3 回答 3

4
SELECT  a.ID AS PostID,
        a.post_title AS PostTitle,
        c.meta_value AS CategoryID,
        d.name AS CategoryName,
        a.post_date AS Date
FROM    wp_posts a
        INNER JOIN
        (
            SELECT  post_title, MAX(post_date) max_date
            FROM    wp_posts
            GROUP   BY post_title
        ) b ON a.post_title = b.post_title AND
                a.post_date = b.max_date
        INNER JOIN  wp_postmeta c
            ON a.ID = c.post_ID
        INNER JOIN wp_terms d
            ON c.meta_value = d.term_ID
WHERE   c.meta_key = 'matchdayTeamsCategory'
于 2013-02-22T17:34:17.350 回答
2

您必须在 GROUP BY 中使用 MIN(Date)

于 2013-02-22T17:33:50.497 回答
2

使用按日期排序 DESC 获取最新的“类别 1”

于 2013-02-22T17:35:59.437 回答