mysql返回最大n个具有相同值的行
Posted
技术标签:
【中文标题】mysql返回最大n个具有相同值的行【英文标题】:mysql return max n amount of rows with same value 【发布时间】: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 行。
我怎样才能简单地解决这个问题?
【问题讨论】:
样本数据对您的问题有很大帮助。 【参考方案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'
【讨论】:
以上是关于mysql返回最大n个具有相同值的行的主要内容,如果未能解决你的问题,请参考以下文章