MySql如何查出符合条件的最新数据行

MySql如何查出符合条件的最新数据行

结合示例:

这是一张记录人员来访的记录表。
数据表里的数据准确记录了每个人来访时带的帽子颜色、时间、人员编码(每个人少数)。
MySql如何查出符合条件的最新数据行

数据样例:

MySql如何查出符合条件的最新数据行

需要做到的是 :

拿出符合条件最新的来访记录。

你会最怎么做?

先实现一点的, 取出 A101 这个人员编码的 最新来访记录 。

首先先展示错误的sql示例: 想当然地使用max() 函数。

SELECT MAX(id) AS id ,user_code,cap_color,create_time FROM vist_record WHERE user_code=’A101′ ;

查询结果(错误的结果):

MySql如何查出符合条件的最新数据行

显然咋一看出来的数据有模有样,但是其实是错的。

为什么是错的的,可以稍微讲一下,既然评论区有人感兴趣了(欢迎兄弟们说出自己的看法)。

简单叙述, max是聚合函数, 我们的错误示例没配合group by 去使用, 这时候其实也就mysql这个家伙能让我们执行了,很多数据库都直接报错的。

那么执行是执行的,其实这时候mysql相当于把整个表当作了一个内容块去进行一个压缩检索。

我们加上了where 条件 user_code=’A101’,所以整个内容块确实过滤掉了其他不是user_code=’A101′ 的数据。

也就是说这种松懈执行的情况下,mysql保证max 返回(相关列) 的最大值, 其他列字段它是不保证的。

正确的数据是 :

MySql如何查出符合条件的最新数据行

那是不是max(id) 用不了了?

正确用法(将符合条件的最大id值作为条件):

SELECT
id,user_code,cap_color,create_time
FROM vist_record
WHERE id IN (SELECT MAX(id) AS id FROM vist_record WHERE user_code=’A101′ )

查询结果:
MySql如何查出符合条件的最新数据行

但是看到上面使用子查询的这种方式,

大家心里面肯定也已经在暗暗地骂娘, 拿个最新数据这么麻烦?

有没有简单一点的?

有。

比如说,我们已经确定了, id是自增的,id最大的数据(符合条件的数据) 就是最新的。

那么我们就可以使用倒序 DESC 来取最新数据:

DESC 也就是 倒序/降序 。

PS:
MySql如何查出符合条件的最新数据行

使用倒序查找:

SELECT *
FROM vist_record
WHERE user_code=’A101′
ORDER BY id DESC
LIMIT 1;

查询结果:

MySql如何查出符合条件的最新数据行

或者根据时间倒序:

SELECT *
FROM vist_record
WHERE user_code=’A101′
ORDER BY create_time DESC
LIMIT 1;

查询结果:

MySql如何查出符合条件的最新数据行

就这么简单实现了吗?

那么我们如果需求要的不是指定A101 要的是涉及到的每一个人的最新数据呢?

也就是存在多组的概念。

每一类的符合条件的最新数据

橙色框就是 A101 、B202 、 C303 分别的最新记录 , 我们要取出来。

MySql如何查出符合条件的最新数据行

错误示例:

SELECT MAX(id) AS id ,user_code,cap_color,create_time FROM vist_record GROUP BY user_code

错误的筛选结果:

MySql如何查出符合条件的最新数据行

正确编码:

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如何查出符合条件的最新数据行”的内容了,经过本文的学习后,相信大家对MySql如何查出符合条件的最新数据行这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

文章标题:MySql如何查出符合条件的最新数据行,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/25985

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年9月16日 下午10:25
下一篇 2022年9月16日 下午10:26

相关推荐

  • Redis三种集群模式是什么

    三种集群模式 redis有三种集群模式,其中主从是最常见的模式。 Sentinel 哨兵模式是为了弥补主从复制集群中主机宕机后,主备切换的复杂性而演变出来的。哨兵顾名思义,就是用来监控的,主要作用就是监控主从集群,自动切换主备,完成集群故障转移。 cluster 模式是redis官方提供的集群模式,…

    2022年9月1日
    58600
  • weblogic攻击手法有哪些

    简介 weblogic服务器的特点为架构庞大复杂,蓝队一般很难防御,且多部署于外网。而且weblogic的攻击成本比较低,只要存在漏洞,一般可以直接获取目标服务器的root权限。在攻防演习中被各大攻击队,防守方重点关注。 当然,目前网上公开的各种exp程序,当然也包括我自己的工具,或多或少都有点问题…

    2022年9月22日
    60400
  • 如何进行AppLocker绕过分析

    前言 什么是applocker AppLocker即“应用程序控制策略”,是Windows 7系统中新增加的一项安全功能。在win7以上的系统中默认都集成了该功能,我们可以使用在services中启用Application Identity,然后在local security policy中找到Ap…

    2022年9月16日
    64000
  • ppt首行缩进怎么设置

    ppt首行缩进设置方法: 1、首先打开幻灯片文件,选择上面的“插入”。 2、之后去找到中间的“文本框设置”。 3、然后建立一些内容。 4、打开“段落样式”点击打开“属性设置”。 5、在段落下面的“缩进”中点击“特殊格式”选择“首行缩进”即可。 以上就是关于“ppt首行缩进怎么设置”这篇文章的内容,相…

    2022年8月31日
    97500
  • windows浩辰cad看图王测量尺寸不对怎么解决

    解决方法: 1、我们可以看到首次测量的距离如图所示,发现与已知尺寸不同。 2、这时候我们点击窗口最下方的对象捕捉,如图所示、 3、再点击上方测量中的“距离” 4、然后我们将鼠标移动到需要测量的点,会发现软件会自动帮你定位。 5、选取名列前茅个点后,再使用相同的方法选取第二个点。 6、选取完成后按下键…

    2022年9月21日
    67700
  • mysql怎么设置最大连接数

    方法一:命令行修改 我们只需要打开mysql的控制台,输入“set GLOBAL max_connections=1000;”语句,就可直接设置最大连接数,如下图所示: 注:这种方法标不治本,只能暂时的修改最大连接数,一点重启mysql,最大连接数又会变回原先设置的值。 方法二:通过mysql配置文…

    2022年9月15日
    52700
  • Redis实现限流器的方法有哪些

    方法一:基于Redis的setnx的操作 我们在使用Redis的分布式锁的时候,大家都知道是依靠了setnx的指令,在CAS(Compare and swap)的操作的时候,同时给指定的key设置了过期实践(expire),我们在限流的主要目的就是为了在单位时间内,有且仅有N数量的请求能够访问我的代…

    2022年9月10日
    53800
  • 前端node Session和JWT鉴权登录怎么实现

    服务端渲染及session鉴权 服务端渲染 服务端渲染简单来说就是前端页面是由服务器通过字符串拼接动态生成的,客户端不需要额外通过Ajax请求参数,只需要做好渲染工作即可。 优点 前端耗时少,前端只需要请求一次接口就能将数据渲染出来,首屏加载速度变快。 利于SEO,因为服务器端相应的是完整的html…

    2022年9月21日
    67500
  • Redis处理接口幂等性的方案有哪些

    前言:接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。对于一些用户请求,在某些情况下是可能重复发送的,如果是查询类操作并无大碍,但其中有些是涉及写入操作的,一旦重复了,可能会导致很严重的后果,例如交易的接口如果重复请求可能会重复下单。接口幂等性是指用户对于同一操作发起的一次请求或者多次…

    2022年8月31日
    78300
  • tracert命令怎么使用

    tracert命令的用法: 1、首先点击左下角开始,然后打开“运行”。 2、之后输入代码“cmd”。 3、在打开的窗口中输入“tracert”。 4、该命令是路由器追踪命令,接着继续输入“tracert+需要追踪ip地址”, 在tracert后面加一个空格,并按下回车。 5、最后就会显示追踪路由的全…

    2022年8月31日
    62000
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部