首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只需一个查询就可以做到这一点:获取固定数量的不同类型、已排序的项目

问只需一个查询就可以做到这一点:获取固定数量的不同类型、已排序的项目
EN

Stack Overflow用户
提问于 2010-12-14 12:41:33
回答 1查看 29关注 0票数 1

假设我有一个包含" type“和"date”列的表,我想获取每种类型的最新3项,按日期排序。(不能相信自然表的顺序或插入顺序)。查询不需要计算"type“列的所有不同值,这些值可以在查询中指定。

我尝试使用变量,如下所示:

代码语言:javascript
复制
set @c=0;
set @d=0;
select *, @c:=IF(type = 1, @c+1,@c), @d:=IF(type = 2, @d+1,@d) from testtable HAVING((type=1 AND @c < 3) OR (type=2 AND @d<3)) order by testdate;

这是“几乎”的工作,(它为每个类型多返回一个条目,这很好),我猜这与mysql解析HAVING子句的方式有关(实际上,在某些情况下,我发现我需要使用WHERE而不是HAVING).Can有人对此有所了解吗?我这样使用它安全吗?

EN

回答 1

Stack Overflow用户

发布于 2010-12-14 13:20:08

好的,看起来使用HAVING是很好的……我遇到了一些问题,因为在我的实际代码中,我需要使用一些order-by,最后一个是RAND() (用来解决平局),而RAND()排序似乎与mysql变量赋值搞得一团糟。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4435946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档