【问题标题】:mysql return max n amount of rows with same valuemysql返回最大n个具有相同值的行
【发布时间】:2021-01-01 04:20:58
【问题描述】:

我有一个 wordpress 数据库,我想只选择 5 行(帖子)具有相同元值的行。这意味着如果我有 100 个帖子,其中每 20 个具有相同的元值,我会得到 5 次 5 行具有相同元值的帖子。

SELECT * FROM `wp_posts` a, `wp_postmeta` b WHERE a.ID = b.post_id AND b.meta_key = 'mykey' AND a.post_type='code' AND a.post_status='publish' LIMIT DISTINCT(meta_value) 5

当然 LIMIT DISCINCT(meta_value) 5 是不可表示的,但它表明每个 meta_value 我只希望有 5 行。

我怎样才能简单地解决这个问题?

【问题讨论】:

  • 样本数据对您的问题有很大帮助。

标签: mysql sql join greatest-n-per-group window-functions


【解决方案1】:

如果您运行的是 MySQL 8.0,则可以使用窗口函数。但是,您需要一个定义帖子元排序的列:

select * 
from wp_posts p
inner join (
    select pm.*, row_number() over(partition by post_id order by id desc) rn
    from wp_postmeta
    where b.meta_key = 'mykey'
) pm on p.id = pm.post_id and pm.rn <= 5
where p.post_type = 'code' and p.post_status = 'publish' 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 2013-05-18
    相关资源
    最近更新 更多