declare @tab table(autoid varchar(20),schoolByName varchar(20),SchoolName varchar(20),SchoolBenelux varchar(20)) insert @tab values('8659','哈尔滨工业大学','工大','哈工大') insert @tab values('8660','工业大学','工大','哈工大') insert @tab values('8661','哈工大','工大','哈工大') insert @tab values('8662','哈工','工大','哈工大') select * from @tab where autoid in (select top 1 autoid from @tab a where a.SchoolName=SchoolName order by len(schoolByName) desc)
select *from table group by schoolname having max(len(schoolbyname))
select schoolByName, from 表 group by schoolname having len(schoolbyname)=max(len(schoolbyname))
TO: winehero(编程人生)服务器: 消息 8120,级别 16,状态 1,行 1 列 'Univ_Seek_School.SchoolByname' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。 服务器: 消息 8121,级别 16,状态 1,行 1 列 'Univ_Seek_School.SchoolByname' 在 HAVING 子句中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
declare @tab table(autoid varchar(20),schoolByName varchar(20),SchoolName varchar(20),SchoolBenelux varchar(20)) insert @tab values('8659','哈尔滨工业大学','工大','哈工大') insert @tab values('8660','工业大学','工大','哈工大') insert @tab values('8661','哈工大','工大','哈工大') insert @tab values('8662','哈工','工大','哈工大') insert @tab values('8663','哈工kkkkkkkkk','工大1','哈工大2') insert @tab values('8664','哈工kk','工大1','哈工大2') insert @tab values('8665','哈工ggggggggggfff','工大1','哈工大2')select * from @tabselect *,[排名]=(select count(1) from @tab where SchoolName=a.SchoolName and len(a.schoolByName)<=len(schoolByName)) from @tab a--你要的结果 select * from ( select *,[排名]=(select count(1) from @tab where SchoolName=a.SchoolName and len(a.schoolByName)<=len(schoolByName)) from @tab a ) b where b.排名=1
insert @tab values('8659','哈尔滨工业大学','工大','哈工大')
insert @tab values('8660','工业大学','工大','哈工大')
insert @tab values('8661','哈工大','工大','哈工大')
insert @tab values('8662','哈工','工大','哈工大')
select * from @tab where autoid in
(select top 1 autoid from @tab a where a.SchoolName=SchoolName order by len(schoolByName) desc)
from 表
group by schoolname
having len(schoolbyname)=max(len(schoolbyname))
老大,我数据库里不仅仅只有一个学校的数据哈。还有其它学校的。autoid schoolByName SchoolName SchoolBenelux
8659 哈尔滨工业大学 工大 哈工大
8660 工业大学 工大 哈工大
1259 北大 北大 北大
134 北京大学 北大 北大
列 'Univ_Seek_School.SchoolByname' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
服务器: 消息 8121,级别 16,状态 1,行 1
列 'Univ_Seek_School.SchoolByname' 在 HAVING 子句中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
一直提示:服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: ')' 附近有语法错误。
declare @tab table(autoid varchar(20),schoolByName varchar(20),SchoolName varchar(20),SchoolBenelux varchar(20))
insert @tab values('8659','哈尔滨工业大学','工大','哈工大')
insert @tab values('8660','工业大学','工大','哈工大')
insert @tab values('8661','哈工大','工大','哈工大')
insert @tab values('8662','哈工','工大','哈工大')
insert @tab values('8663','哈工kkkkkkkkk','工大1','哈工大2')
insert @tab values('8664','哈工kk','工大1','哈工大2')
insert @tab values('8665','哈工ggggggggggfff','工大1','哈工大2')select * from @tabselect *,[排名]=(select count(1) from @tab where SchoolName=a.SchoolName and len(a.schoolByName)<=len(schoolByName))
from @tab a--你要的结果
select * from (
select *,[排名]=(select count(1) from @tab where SchoolName=a.SchoolName and len(a.schoolByName)<=len(schoolByName))
from @tab a ) b where b.排名=1