【发布时间】:2016-10-24 19:45:44
【问题描述】:
在过去的 4 个小时里,我一直专注于这个问题,简而言之,我想按 id 以 DESC 顺序排列此表,按 ads_post_id 分组(基于 DESC 顺序on id),返回 LIMIT 6 行。
数据库样本,
id | ads_post_id
---------------------------------------------------------------------------
22 | 983314845117571
23 | 983314845117571
24 | 983314845117571
104 | 983314845117571
250 | 983314845117571
253 | 983314845117571
767 | 983314845117571
---------------------------------------------------------------------------
我当前的查询,
SELECT * FROM fb_ads GROUP BY ads_post_id ORDER BY id DESC LIMIT 6
然而这一切的回报是,
id | ads_post_id
---------------------------------------------------------------------------
22 | 983314845117571
---------------------------------------------------------------------------
它应该返回,
id | ads_post_id
---------------------------------------------------------------------------
767 | 983314845117571
---------------------------------------------------------------------------
很明显它是按 ASC 顺序分组,然后按 ID 以 DESC 顺序排序的,对吧?
因此,这使我陷入了研究的困境,大多数人似乎都将其用作解决方法,但由于性能下降,这并不可取,每次用户进入下一个时都需要调用此查询页面,
SELECT * FROM
(
select * from fb_ads order by id desc
) as fb_ads
group by ads_post_id
order by id DESC LIMIT 6
但是,它仍然对我不起作用,这只是返回,
---------------------------------------------------------------------------
id | ads_post_id
---------------------------------------------------------------------------
22 | 983314845117571
---------------------------------------------------------------------------
请注意:为了简单起见,这是我的数据库示例,实际上会有数千个ads_post_id,据我所知,此时MYSQL的MAX()函数不起作用,因为它只返回一行。
我不是 MYSQL 方面的专家,但我知道的足够多,我觉得这需要一个超出我专业范围的解决方案。
一些帮助会大有帮助,谢谢。
【问题讨论】:
-
以后不要再花4个小时在上面问了
-
期望的结果是什么样的?
LIMIT 6是干什么用的?这里只有一个 ads_post_id,所以关于 GROUP BY 的所有内容似乎都无关紧要。
标签: mysql greatest-n-per-group