MySQL |选择区分记录

时间:2013-02-22 17:30:46

标签: mysql sql greatest-n-per-group

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

正如您所看到的,在结果中我有两次“类别1”。我喜欢做的是只获得“第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

我尝试了Group By“CategoryID”但是我在结果中只获得了一个类别1的实例,但我得到的是旧版本,而不是属于“类别1”的最早记录。

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

3 个答案:

答案 0 :(得分: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'

答案 1 :(得分:2)

您必须在GROUP BY

中使用MIN(日期)

答案 2 :(得分:2)

按日期使用DESC来获得"类别1和#34;最新