MySQL的选择最近,限制由源
问题描述:
我有一个具有以下字段的表:MySQL的选择最近,限制由源
- ID
- SOURCE_ID
- 标题
- 日期
我要选择25个最近的项目,所以SELECT * FROM table ORDER BY date DESC LIMIT 50
额外的要求是从每个source_id只选择最近的3个。
因此,如果记录看起来类似的东西,
id | source_id | title | date
----+-----------+-------+---------
1 2 aaa 2012-1-1
2 2 aaa 2012-1-2
3 2 aaa 2012-1-3
4 2 aaa 2012-1-4
5 3 aaa 2012-1-5
6 4 aaa 2012-1-6
我希望我的查询返回的项目4,3,2,5,6
所以只是最近3每个源用的超过所有限制25.
我不确定它是否足够清楚,所以请询问是否需要更多的细节。
答
在这里你去:
SELECT *
FROM your_table t1
WHERE
(
SELECT COUNT(*)
FROM your_table t2
WHERE
t1.source_id = t2.source_id
AND t1.date < t2.date
) < 3
ORDER BY source_id, date DESC
结果:
4 2 aaa 2012-01-04
3 2 aaa 2012-01-03
2 2 aaa 2012-01-02
5 3 aaa 2012-01-05
6 4 aaa 2012-01-06
用简单的英语:只需要有不到3个新行与相同source_id
行。
注:这可能如果第三最新date
(对于相同source_id
)每source_id
选择多于3行恰好由多个行共享。让我知道在这种情况下,“3最新”意味着什么,如果这是一个问题...
答
select * from table where source_id in
(select distinct source_id from table order by date limit 3)
LIMIT 25
+0
它看起来好像这选择来自3个最新来源的所有行。我期待选择最新的行限制它到3由源 – applechief 2012-02-27 19:33:25
它的作品:)谢谢! – applechief 2012-02-28 17:19:47