mysql结果group,MySQL Group By显示最新结果

但是我发现在进行分组之前它仍然没有订购.

具体来说,我要做的是使用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

)

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

来源: https://codeday.me/bug/20191001/1840138.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值