MySQL Group By 显示最新结果

标签 mysql wordpress greatest-n-per-group custom-post-type

我正在尝试查询 MySQL 以 ORDER 然后 GROUP...这是一个在这里经常出现的问题,我找到了一个似乎与我相关的答案:Getting a MySQL group by query to display the row in that group with the highest value

但是我发现在进行分组之前它仍然没有排序。

具体来说,我想做的是使用 Wordpress 自定义帖子类型按名为“日期”的元数据字段进行分组,并按帖子日期排序。

这是我的查询:

SELECT 
    `ID`, `date`, `post_date`, `date_rank`
FROM (
        SELECT
            `Post`.`ID`,
            `Post`.`post_date`,
            `PostData`.`meta_value` AS `date`,
            CASE
                WHEN @data_date = `PostData`.`meta_value` THEN @rowum := @rownum + 1
                ELSE @rownum := 1
            END AS date_rank,
            @data_date := `PostData`.`meta_value`
        FROM
            `".$this->wpdb->posts."` AS `Post`
        JOIN 
            `".$this->wpdb->postmeta."` AS `PostData`
            ON `Post`.`ID` = `PostData`.`post_id` AND `PostData`.`meta_key` = 'date'
        JOIN (SELECT @rownum := 0, @data_date := '') AS `vars`
        WHERE 
            `Post`.`post_type` = 'my_post_type'
            AND
            `Post`.`post_status` = 'publish'
        ORDER BY `Post`.`post_date` DESC
    ) AS `x`
WHERE date_rank = 1
ORDER BY `date` ASC

所需的结果是每个“日期”的帖子(这是一个元字段),以及根据 post_date 的该“日期”的最新帖子。

最佳答案

SELECT  *
FROM    (
        SELECT  DISTINCT meta_value
        FROM    postdata pd
        WHERE   pd.meta_key = 'date'
        ) pd
JOIN    post p
ON      p.id = 
        (
        SELECT  post_id
        FROM    postdata pdi
        JOIN    post pi
        ON      pi.id = pdi.post_id
        WHERE   pdi.meta_key = 'date'
                AND pdi.meta_value = pd.meta_value
        ORDER BY
                pi.post_date DESC, pi.id DESC
        LIMIT 1
        )

关于MySQL Group By 显示最新结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4668902/

相关文章:

mysql - 在mysql存储过程中执行多个动态查询

php - 如何跟踪从呈现的 HTML 加载特定行的文件

jquery - FancyBox iframe 将parent.$ 返回为未定义(使用 WordPress)

sql - 如何获取每个外键的最小日期记录的记录 ID?

mysql - 使用MySQL从三个表中检索数据

java - 更改网络后如何解决 'Cannot create PoolableConnectionFactory'异常?

sql - T-SQL : Selecting Column Based on MAX(Other Column)

MySQL查询只拉取最新记录

php - 无法启用 mysqli 扩展 - PHP 7.1.12,无法连接到数据库

php - 如何在不破坏 CSS 标题的情况下在 Webfolio WordPress 主题中使用背景图片?