mysql获取数据列值(int和string)最大值

        最近在开发项目的时候有这么个需求,我数据库里面存了很多升级包,升级包有列数据表示的是升级包的版本号,类型属于字符串,结构类似于V1.0.2.22这种,然后后台有个任务需要获取最新版本号的那条数据。最开始的时候我不知道数据库居然对字符串类型的数据也可以筛选大小,之前一直觉得只有int型的数据才可以直接从数据库里面回去最大最小值。然后当我不知道的情况下,做法就很复杂了,把存储的所有版本号全部取出来,然后再按字符串的位进行逐一对比,最后筛选出最新也是版本号最大的版本,最后发现数据库直接就可以操作。

        mysql查询方法果然神奇,居然可以给筛选出字符串的max的功能,只能说是牛逼!!!

        方法如下:原生的mysql语句是这样的:

SELECT max(agent_ver) FROM versionpackage;

我用mysql workbench测试的截图如下:

如果是查询类型为int型的数据,直接把max括号里的key值改成类型为int的key值即可

我们后台开发用的是golang,mysql组件是gorm,先附上使用go代码查询最新版本号数据的主要代码

var maxVer string
dbmax := GormDbMysql.Table("versionpackage")
res := dbmax.Select("MAX(agent_ver)").Scan(&maxVer)
if res.Error != nil {return
}
db := GormDbMysql.Table("versionpackage")
res = db.Where("agent_ver = ?", maxVer).Find(&datastruct)
if res.Error != nil {return
}

代码很少,表达清楚就行了,简单解释一下,如果你只需要获取到最新版本号那个字符串,那么只需要前段代码即可,maxVer即是获取到的最新版本号;我项目中是需要获取最新版本号的整条数据,所以下面我又根据版本号获取了整条数据,本来是想一次访问获取最新版本号的最新数据的,奈何没有试成功,才又调用了一次,有可以一次就可以查询出版本号最新的整条的数据的,欢迎评论区指出,万分感激。

备注:

1、查询整条数据的时候代码里面没有定义datastruct结构体,这个根据不同的项目有所不同,此处省略了结构体,需要使用的同学需要在前面添加该结构体

2、还有就是如果数据库里面的版本号数据为空的时候,使用max查询最大值的时候会报错,不知道gorm插件后面是否会修复,我的处理方式是直接在前面再查询了表中的count数量,数量大于0的才执行下面的查询工作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/312402.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网络面试(6)】IP协议对网络包的转发

在前面的博客中,我们提到过,网络传输的报文是有真实的数据包和一些头部组成,目前我们了解的头部就有TCP头、IP头、MAC头,而且这三个头部信息都是在应用程序委托给协议栈之后,被写入的相关信息,这些头部都是…

nodejs+vue+微信小程序+python+PHP的医疗报销系统的设计与实现-计算机毕业设计推荐

接着进行系统的需求分析、功能设计、数据库设计,最后进行编码实现。医疗报销系统主要包括了前台和后台信息管理两个部分,前台实现信息浏览、报销申请、意见反馈、个人信息管理等,后台实现新闻资讯管理、报销审核、报销流程管理、系统信息管理…

基于Ubuntu环境Git服务器搭建及使用

基于Ubuntu环境Git服务器搭建及使用 Chapter1 搭建本地git服务器及详细操作步骤1.搭建本地git服务器1.1 环境1.2 服务端配置1.3 创建git专属用户1.4 创建git仓库1.5 配置免密登录基础 2.客户端拉取推送代码2.1客户端创建ssh公钥 2.2 免密配置3.仓库使用(拉取及推送代…

react18框架笔记

React React 是 facebook 出的一款针对视图层的库(library)。它是基于单向数据流思想开发的,主要的一个功能就是针对视图显示,让我们把一个项目拆分成一个一个组件进行开发维护。 官网 目前我们讲的 react 是基于 18.2 的版本。react 每一个版本更新之…

2023 年四川省职业院校技能大赛“信息安全管理与评估”样题

2023 年四川省职业院校技能大赛(高等职业教育) “信息安全管理与评估”样题 竞赛需要完成三个阶段的任务,分别完成三个模块,总分共计 1000分。三个模块内容和分值分别是: 第一阶段:模块一 网络平台搭建与设…

T 检验和 Z 检验之间的区别

在统计学领域,假设检验在从数据中得出有意义的结论方面发挥着至关重要的作用。两种常用的统计检验是 T 检验和 Z 检验。虽然这两种检验都用于评估假设,但它们的应用和假设有所不同。 t 检验和 z 检验都假设数据呈正态分布(或近似正态分布&…

归并算法排序

目录 归并排序 逆序对的数量 归并排序 题目如下: 给定你一个长度为 n 的整数数列。 请你使用归并排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式: 输入共两行,第一行包含整数 n。 第二行包含 n 个整数&…

计算机网络(6):应用层

每个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。 应用层的具体内容就是规定应用进程在通信时所遵循的协议。 应用层的许多协议都是基于客户服务器方式。即使是对等通信方式&#x…

PTA——计算火车运行时间

本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。 输入格式: 输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23&#xff0…

Pandas教程(二)—— 不同格式的数据读取

前言:几种常用数据格式的介绍 csv文件 1. 逗号分隔值文件,以纯文本形式(记事本)存储表格数据 2. 它是一种平面文件:即只存储数据和文字,不能存储公式、图表等 3. 更适合存储大数据,一般用来批…

docker里面不能使用vim的解决办法

docker里面不能使用vim的解决办法 目录 docker里面不能使用vim的解决办法 1.在使用时会出现 2.在使用这些都不能解决的时候考虑 3.测试是否可用 1.在使用时会出现 bash: vim: command not found 出现这种错误时首先考虑使用 apt-get update 然后在用 apt-get install …

Plantuml之EBNF语法介绍(二十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…