怎样查询出某个字段值长度最长的那条数据?

时间:2021-08-14 19:17:49
表ryb,字段姓名xm,说明sm,
说明值有长有短,同一个人有多条数据,怎样查询姓名为‘张三‘,且‘张三‘说明值最长的那条数据

13 个解决方案

#1



select top 1 * from ryb where xm='张三' order by len(sm) desc

#2


加个TOP 1 with tes这样有多条一样长 也可以同时显示多条。

#3


其实更新说明值最长的那条数据,的某个字段,例如更新字段bz的值为‘最长’,又该怎么写这语句?上面的语句只能查出来

#4


select xm,max(sm)
from ryb
group by xm

#5


其实我要更新说明值最长的那条数据的某个字段

#6


本帖最后由 DBA_Huangzj 于 2014-09-25 11:15:40 编辑
update a
set a.bz='最长'
from ryb a inner join (select xm,max(sm)sm
from ryb
group by xm) b on a.xm=b.xm and a.sm=b.sm

#7



create table  ryb (nam varchar(10),bz varchar(10),sm varchar(20))
insert into ryb 
select '张三' as name,null as bz,'你好' as sm union all
 select '李四',null,'啊好吗'
 

 update ryb set bz='最长'
 where LEN(sm)=(select MAX(len(sm)) from ryb)

--结果

nam        bz         sm
---------- ---------- --------------------
张三         NULL       你好
李四         最长         啊好吗

(2 行受影响)

#8


引用 6 楼 DBA_Huangzj 的回复:
update a
set a.bz='最长'
from ryb a inner join (select xm,max(sm)sm
from ryb
group by xm) b on a.xm=b.xm and a.sm=b.sm


大哥你这个不对啊
测试了下 不对啊 都更新了啊

#9


引用 5 楼 wnsr 的回复:
其实我要更新说明值最长的那条数据的某个字段

试一下这句

update ryb set bz='最长' from(
select top 1 * from ryb where xm='张三' order by len(sm) desc) as b where ryb.xm=b.xm and ryb.sm=b.sm

#10


引用 6 楼 DBA_Huangzj 的回复:
update a
set a.bz='最长'
from ryb a inner join (select xm,max(sm)sm
from ryb
group by xm) b on a.xm=b.xm and a.sm=b.sm

版主
字段sm是字符类型
max(sm) 还是其本身值

#11



这样不行?
update ryb set bz='最长' 
                       where len(sm)=
 (select top 1 MAX(len (sm)) from ryb)

#12


UPDATE  ryb SET  字段=‘’
where bz=
(SELECT  TOP 1 bz FROM PRDT ORDER BY LEN(NAME) DESC))

#13


UPDATE  ryb SET  字段=‘’
where bz=
(SELECT  TOP 1 bz FROM PRDT ORDER BY LEN(bz) DESC))

#1



select top 1 * from ryb where xm='张三' order by len(sm) desc

#2


加个TOP 1 with tes这样有多条一样长 也可以同时显示多条。

#3


其实更新说明值最长的那条数据,的某个字段,例如更新字段bz的值为‘最长’,又该怎么写这语句?上面的语句只能查出来

#4


select xm,max(sm)
from ryb
group by xm

#5


其实我要更新说明值最长的那条数据的某个字段

#6


本帖最后由 DBA_Huangzj 于 2014-09-25 11:15:40 编辑
update a
set a.bz='最长'
from ryb a inner join (select xm,max(sm)sm
from ryb
group by xm) b on a.xm=b.xm and a.sm=b.sm

#7



create table  ryb (nam varchar(10),bz varchar(10),sm varchar(20))
insert into ryb 
select '张三' as name,null as bz,'你好' as sm union all
 select '李四',null,'啊好吗'
 

 update ryb set bz='最长'
 where LEN(sm)=(select MAX(len(sm)) from ryb)

--结果

nam        bz         sm
---------- ---------- --------------------
张三         NULL       你好
李四         最长         啊好吗

(2 行受影响)

#8


引用 6 楼 DBA_Huangzj 的回复:
update a
set a.bz='最长'
from ryb a inner join (select xm,max(sm)sm
from ryb
group by xm) b on a.xm=b.xm and a.sm=b.sm


大哥你这个不对啊
测试了下 不对啊 都更新了啊

#9


引用 5 楼 wnsr 的回复:
其实我要更新说明值最长的那条数据的某个字段

试一下这句

update ryb set bz='最长' from(
select top 1 * from ryb where xm='张三' order by len(sm) desc) as b where ryb.xm=b.xm and ryb.sm=b.sm

#10


引用 6 楼 DBA_Huangzj 的回复:
update a
set a.bz='最长'
from ryb a inner join (select xm,max(sm)sm
from ryb
group by xm) b on a.xm=b.xm and a.sm=b.sm

版主
字段sm是字符类型
max(sm) 还是其本身值

#11



这样不行?
update ryb set bz='最长' 
                       where len(sm)=
 (select top 1 MAX(len (sm)) from ryb)

#12


UPDATE  ryb SET  字段=‘’
where bz=
(SELECT  TOP 1 bz FROM PRDT ORDER BY LEN(NAME) DESC))

#13


UPDATE  ryb SET  字段=‘’
where bz=
(SELECT  TOP 1 bz FROM PRDT ORDER BY LEN(bz) DESC))