mysql使用ORDER BY和GROUP BY
发表于|更新于
|浏览量:
今天写代码时遇到一个需求是这样的:
取表内最新的一条数据,根据用户名分组
本来以为又是那种
需求,然后就开始写sql,写完一运行,报错。。。
然后发现GROUP BY必须放在ORDER BY的前面
但这样又会导致不能取最新的一条数据
于是用了一个“子查询”的办法解决
1 | <select id="cowBeer" resultType="map" parameterType="map"> |
相关推荐
2024-12-12
websocket关闭指定原因
如果没有宽恕之心,生命会被无休止的仇恨和报复所支配。——阿萨吉奥 WebSocket 是一种轻量级、双向的实时通信协议,在现代 Web 应用中非常流行。它为客户端和服务端提供了长连接能力,适用于需要频繁数据交互的场景。然而,在实际开发中,我们经常需要处理 WebSocket 的关闭事件,而 关闭状态(CloseStatus) 是其中一个重要的概念,它能够帮助开发者理解连接关闭的原因,从而采取相应的措施。 什么是 CloseStatus?在 WebSocket 协议中,每次连接关闭都会携带一个 关闭码(close code) 和可选的 关闭原因(reason phrase)。这些关闭码由 RFC 6455 定义,表示连接关闭的原因。例如: 1000 (Normal Closure): 正常关闭,表示连接完成。 1001 (Going Away): 客户端或服务端主动断开(例如页面关闭)。 1002 (Protocol Error): 协议错误。 1003 (Unsupported Data): 不支持的数据类型。 在 Spring Framework 中,org.sprin...
2021-06-09
为什么总说不要循环调用dao
我要让全世界都记住我的温柔。——曼德拉 上次咱们测试过了单表多次查询和连表一次查询的性能比较 这次咱们又抽了点时间进行了一次 循坏调用dao查询性能测试 同样是那一百万条数据,最后测试结果出乎意料 123456789101112131415@Testpublic void cycleTest() { long startTime = System.nanoTime(); List<Film> films = filmMapper.selectList(Wrappers.lambdaQuery()); List<Map<String, Object>> collect = films.stream().map(film -> { Language language = languageMapper.selectById(film.getLanguageId()); Language language1 = languageMapper.selectById(film.ge...
2021-08-17
fastjson全局序列化坑
偌大的城市,绵延无尽,并非是我眼见的让我停住了脚步,而是我所看不见的。——《海上钢琴师》 今天遇到这样一个问题:序列化出现了与预期不一致的效果,重现代码很简单,就返回一个list,包含几个对象 12345@GetMappingpublic Result testQueryParam(CommonDTO commonDTO) { final UserDetail userDetail = UserDetail.builder().build(); return Result.ok().data(Arrays.asList(userDetail, userDetail, userDetail));} 但可以看到我这里第一条数据是正确的,第二条开始就变成了{$ref: "$.data[0]"} 这是因为我们在使用fastjson作为mvc全局序列化框架的时候 在fastjson中,会自动检测循环引用,并且输出为fastjson专有的引用表示格式。但这个不能被其他JSON库识别,也不能被浏览器识别,所以fastjson提供了关...
2020-11-01
java8的stream流(二)
字典里最重要的三个词,就是意志、工作、等待。我将要在这三块基石上建立我成功的金字塔——(法)巴斯德 之前写过一个关于stream流的博客,这次再做个补充吧 1234567891011121314// 取出第一条,没取到则为0Integer first = someNumber.stream().findFirst().orElse(0);// 随机取一个,没取到则为0Integer any = someNumber.stream().findAny().orElse(0);// 直接取和,没取到则为0Integer sum = someNumber.stream().reduce(Integer::sum).orElse(0);// 不包含20为trueboolean noneMatch = someNumber.stream().noneMatch(data -> data == 20);// 全部大于0为trueboolean allMatch = someNumber.stream().allMatch(data -> data > 0);// 任何等...
2025-02-20
HuTool告别Dromara,转型商业化背后的深层原因?
爱自己是终身浪漫的开始。——奥斯卡·王尔德的《理想的丈夫》 最近,开源界一个重磅新闻引发了广泛的讨论:HuTool宣布告别Dromara组织,正式转移到商业化公司账号。这一消息不仅震动了开源社区,也让我们开始反思开源项目的未来走向,特别是在商业化压力日益加剧的今天。 1. 开源的理想与现实:商业化的抉择在开源社区中,HuTool一直是一个备受推崇的项目。它以简洁、高效的工具库为开发者提供了大量的便利,尤其在Java开发者中间有着极高的声誉。HuTool本身在加入Dromara组织之前,已经有着强大的社区支持和广泛的使用群体。然而,随着项目的不断壮大,HuTool面临的一个问题越来越突出——资金与资源的匮乏。 尽管开源项目有其理想主义的成分,很多开源贡献者也抱有让技术回馈社会的想法,但在实际操作中,长期的开发与维护是需要大量资金与人力资源的。这就让许多曾经致力于开源的项目,最终不得不面对是否要转型为商业化项目的问题。HuTool的退出Dromara,正是一个标志性的事件。 2. 商业化的力量:如何平衡开源与盈利HuTool的转型并非孤例。近年来,越来越多的开源项目都在探索商业化...
2025-12-30
修改logback.xml以及mybatis-config.xml同时打印mybatis和jpa的sql
最天才的是时间。——别林斯基 项目背景是apache/shenyu,使用的是mybatis,通过shenyu-admin/src/main/resources/mybatis/mybatis-config.xml来管理相关配置 此处有一行注释了的 1<!-- <setting name="logImpl" value="STDOUT_LOGGING" />--> 我们解开注释即可打印mybatis日志 其次我在该项目中引入jpa 首先shenyu-admin/pom.xml添加依赖: 1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency> 然后添加一个repository作为操作类,比如shenyu-admin/src/main...
