当前位置:网站首页> MySql 查询符合条件的最新数据行
MySql 查询符合条件的最新数据行
2022-07-05 16:42:00 【1024问】
平时做业务,经常是需要查什么什么什么的最新的一条数据。
那至于最新这个概念, 对于产品来说,经常会说的是 时间顺序,最新也就是 最近的意思。
结合示例:
这是一张记录人员来访的记录表。
数据表里的数据准确记录了每个人来访时带的帽子颜色、时间、人员编码(每个人唯一)。
数据样例:
需要做到的是 :
拿出符合条件的最新的来访记录。
你会最怎么做?
先实现一点的, 取出 A101 这个人员编码的 最新来访记录 。
首先先展示错误的sql示例: 想当然地使用max() 函数。
SELECT MAX(id) AS id ,user_code,cap_color,create_time FROM vist_record WHERE user_code='A101' ;
查询结果(错误的结果):
显然咋一看出来的数据有模有样,但是其实是错的。
为什么是错的的,可以稍微讲一下,既然评论区有人感兴趣了(欢迎兄弟们说出自己的看法)。
简单叙述, max是聚合函数, 我们的错误示例没配合group by 去使用, 这时候其实也就mysql这个家伙能让我们执行了,很多数据库都直接报错的。
那么执行是执行的,其实这时候mysql相当于把整个表当作了一个内容块去进行一个压缩检索。
我们加上了where 条件 user_code='A101',所以整个内容块确实过滤掉了其他不是user_code='A101' 的数据。
也就是说这种松懈执行的情况下,mysql保证max 返回(相关列) 的最大值, 其他列字段它是不保证的。
正确的数据是 :
那是不是max(id) 用不了了?
正确用法(将符合条件的最大id值作为条件):
SELECT id,user_code,cap_color,create_timeFROM vist_recordWHERE id IN (SELECT MAX(id) AS id FROM vist_record WHERE user_code='A101' )
查询结果:
但是看到上面使用子查询的这种方式, 大家心里面肯定也已经在暗暗地骂娘, 拿个最新数据这么麻烦?
有没有简单一点的?
有。
比如说,我们已经确定了, id是自增的,id最大的数据(符合条件的数据) 就是最新的。
那么我们就可以使用倒序 DESC 来取最新数据:
DESC 也就是 倒序/降序 。
PS:
使用倒序查找:
SELECT *FROM vist_recordWHERE user_code='A101'ORDER BY id DESCLIMIT 1;
查询结果:
或者根据时间倒序:
SELECT *FROM vist_recordWHERE user_code='A101'ORDER BY create_time DESCLIMIT 1;
查询结果:
就这么简单实现了吗?
那么我们如果需求要的不是指定A101 要的是涉及到的每一个人的最新数据呢?
也就是存在多组的概念。
每一类的符合条件的最新数据
橙色框就是 A101 、B202 、 C303 分别的最新记录 , 我们要取出来。
错误示例:
SELECT MAX(id) AS id ,user_code,cap_color,create_time FROM vist_record GROUP BY user_code
错误的筛选结果:
正确编码:
SELECT id ,user_code,cap_color,create_time FROM vist_record WHERE id in(SELECT MAX(id) AS id FROM vist_record GROUP BY user_code )
到此这篇关于MySql 查询符合条件的最新的数据行的文章就介绍到这了,更多相关MySql查询最新数据行内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!
边栏推荐
- Wechat official account web page authorization login is so simple
- 中国广电正式推出5G服务,中国移动赶紧推出免费服务挽留用户
- Twig数组合并的写法
- [Web attack and Defense] WAF detection technology map
- American chips are no longer proud, and Chinese chips have successfully won the first place in emerging fields
- 国产芯片产业链两条路齐头并进,ASML真慌了而大举加大合作力度
- Learnopongl notes (I)
- thinkphp模板的使用
- CMake教程Step5(添加系统自检)
- 【beanshell】数据写入本地多种方法
猜你喜欢
浏览器渲染原理以及重排与重绘
winedt常用快捷键 修改快捷键latex编译按钮
NPM installation
Etcd 构建高可用Etcd集群
【性能测试】jmeter+Grafana+influxdb部署实战
【Web攻防】WAF检测技术图谱
First day of learning C language
Error in composer installation: no composer lock file present.
How to write a full score project document | acquisition technology
Judge whether a string is a full letter sentence
随机推荐
Use JDBC technology and MySQL database management system to realize the function of course management, including adding, modifying, querying and deleting course information.
Is it safe for qiniu business school to open a stock account? Is it reliable?
ECU introduction
兰空图床苹果快捷指令
Application of threshold homomorphic encryption in privacy Computing: Interpretation
[Jianzhi offer] 63 Maximum profit of stock
云安全日报220705:红帽PHP解释器发现执行任意代码漏洞,需要尽快升级
IDC报告:腾讯云数据库稳居关系型数据库市场TOP 2!
MYSQL group by 有哪些注意事项
深耕5G,芯讯通持续推动5G应用百花齐放
拷贝方式之DMA
The two ways of domestic chip industry chain go hand in hand. ASML really panicked and increased cooperation on a large scale
Keras crash Guide
WR | 西湖大学鞠峰组揭示微塑料污染对人工湿地菌群与脱氮功能的影响
C#(Winform) 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件
Jarvis OJ simple network management protocol
齐宣王典故
Jarvis OJ Flag
Embedded-c Language-3
什么是ROM