mysql查询一个字段最大值_查询表中某一个字段的数字最大值的记录
这个是一个csdn上有人问的一个题目,具体的题目如下:
数据库表 表1
id name
1 DB-235-aa-fc
2 DB-275-ag-fw
3 DB-235-ajj-fj
4 DB-4444444-ss-fq
5 DB-2222-kkk-fh
6 DB-997-ii-fw
. .
. .
里面几千,几万条
在数据库中写查询语句,查询name字段,第一个‘-’和第二个‘-’之间的最大的那个数!
也就是把第4条数据查询出来!
这里给出了两种解法:(1)是利用游标(在利用游标之前,会先过滤一下数据集,让数据集的记录变小,这样可以大大的缩小游标所花的时间)具体的Sql代码如下:
create table #t
(
id int not null identity(1,1) primary key,
name varchar(100) not null
)
insert #t(name)
values
('DB-235-aa-fc'),
('DB-275-ag-fw'),
('DB-235-ajj-fj'),
('DB-4444444-ss-fq'),
('DB-2222-kkk-fh'),
('DB-997-ii-fw')
--下面的select就是缩小了结果集
select *
into #lists
from #t
where len(SUBSTRING(name,1,CHARINDEX('-',name,4)-1))
in(
select max(len(SUBSTRING(name,1,CHARINDEX('-',name,4)-1))) from #t)
declare @name varchar(100)
declare @id int
declare @max int
set @max=-1
declare c cursor for
select * from #lists
open c
fetch next from c into @id,@name
while @@FETCH_STATUS=0
begin
set @name=SUBSTRING(@name,1,CHARINDEX('-',@name,4)-1)
set @name=SUBSTRING(@name,4,LEN(@name)-3)
if(CAST(@name as int)>@max)
begin
set @max=CAST(@name as int)
set @id=@id
end
fetch next from c into @id,@name
end
close c
deallocate c
select * from #lists
where id=@id
drop table #lists
drop table #t
方法2:直接的操作,利用MAX(int),Sql代码如下:
create table #t
(
id int not null identity(1,1) primary key,
name varchar(100) not null
)
insert #t(name)
values
('DB-235-aa-fc'),
('DB-275-ag-fw'),
('DB-235-ajj-fj'),
('DB-4444444-ss-fq'),
('DB-2222-kkk-fh'),
('DB-997-ii-fw')
select * from #t
where SUBSTRING(SUBSTRING(name,1,CHARINDEX('-',name,4)-1),4,LEN(SUBSTRING(name,1,CHARINDEX('-',name,4)-1))-3)
in(
select max(CAST(SUBSTRING(SUBSTRING(name,1,CHARINDEX('-',name,4)-1),4,LEN(SUBSTRING(name,1,CHARINDEX('-',name,4)-1))-3) AS int))
from #t
)
drop table #t
结果都是相同的:4 DB-4444444-ss-fq
mysql查询一个字段最大值_查询表中某一个字段的数字最大值的记录相关推荐
- 抛物线中四边形面积最大值_函数中动点与四边形面积最大值
[思路分析] (1)根据已知条件中,当自变量x=-1和x=5时,函数值是相等的可以求出抛物线的对称轴为x=2,再把对称轴方程和直线l的方程联立,可以求得抛物线的顶点坐标,由此我们可以设出抛物线的顶点式 ...
- 查询一个表中一个字段相同的数据_最实用MySQL 查询当天、本周,本月、上一个月的数据...
MySQL 查询当天.本周,本月.上一个月的数据 mysql查询当天的所有信息: SELECT * FROM 表名 WHERE year(时间字段名)=year(now()) and month(时间 ...
- mysql查询数学成绩信息_【MySQL】:利用DQL查询表中的数据
DQL(Data Query Language):数据查询语言,用以查询数据库中表的记录(数据). CREATE TABLE exam( id INT PRIMARY KEY AUTO_INCREME ...
- mysql 查询当天、本周、本月、上一个月、季度等数据
今天 select * from 表名 where to_days(时间字段名) = to_days(now());昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ...
- 设计一个方法,将一个字符串中每一个英文单词的首字母大写,返回一个新的字符串
学习后的练习内容,留个纪念~ /*** 设计一个方法,将一个字符串中每一个英文单词的首字母大写,返回一个新的字符串*/ public class NewStr {public static void ...
- mysql查询唯一单词_MySql从表中获取唯一单词列表,其中字段中的值用逗号分隔
我不确定这是否可以用纯SQL(MySQL),但无论如何我会问.我有这样一张桌子: ID TAGS ----------------------------- 1 word1,word2,word3 2 ...
- mysql 查询多个总和_使用MySQL查询选择多个总和,并在单独的列中显示?
要使用MySQL查询选择多个总和列并将它们显示在单独的列中,您需要使用CASE语句.语法如下:SELECT SUM( CASE WHEN yourColumnName1='yourValue1' TH ...
- php中mysql查询条件为数组_请教php中数组做为mysql查询条件wherexxinarray,怎么处理...
原先想着把数组 $customerid 拆分出来,判断长度给不同的变量,变量多少还要再判断,然后写 下边的mysql查询,有些麻烦,请教有没有好的方法,谢了! -------------------- ...
- mysql查询学号和姓名_数据库SQL语句中 查询选修了全部课程的学生的学号和姓名...
一.SQL语言查询选修了全部课程的学生的学号和姓名. 两种解决途径: 第一种: 我们可以表示为在SC表中某个学生选修的课程数等于C表中课程总数.相应的SQL语言如下: selectS#,SNAMEfr ...
最新文章
- 为何把日志打印到控制台很慢?
- java 反射遍历_java使用反射遍历类的字段
- 【王俊杰de人工智能实战课】第6次作业
- slf4j + logback 输出日志:mybatis sql语句
- cvc 降噪_耳机降噪技术有哪几种?
- CodeForces - 1312E Array Shrinking(区间dp)
- 以撩妹为例,5分钟让你秒懂深度学习!
- 架构专家高磊:缓存为王——无线缓存架构优化
- Mysql数据库——数据表的优化、外键与三范式
- Python使用系统聚类算法对随机元素进行分类
- Bzoj 4147: [AMPPZ2014]Euclidean Nim(博弈)
- 从文件中读取一个long型数_Python 从文件中读取数据
- xp谷歌浏览器时间快了_Win7系统零日漏洞曝光,谷歌建议:升级Windows 10
- ps3 移动硬盘 安装linux,ps3内置硬盘安装方法
- opencv4图像基本变化
- xlsx格式表格汉字批量转音节,不带声调(python)
- Newton Interpolation
- webdriver中的截图截图方法
- Jquery实现简单轮播图效果
- 二分查找一个数首次与最后出现的位置