sql语句中group by,聚合函数的使用。单行子查询返回多行怎么办?求解答!

selectmax(caption)fromtablegroupbyid这条sql帮我筛选出了77条(ID不同,并且ID相同中caption最大的数据)。我想查出这77条... select max(caption) from table group by id这条sql帮我筛选出了77条(ID不同,并且ID相同中caption最大的数据)。我想查出这77条全部列。
select * from table where caption = (select max(caption) from table group by id)这样做会报错。distinct(id)一共有77条数据。请大神们指教!
展开
 我来答
longrenyingdc8ecb1
2019-07-31 · TA获得超过1万个赞
知道大有可为答主
回答量:6032
采纳率:82%
帮助的人:2290万
展开全部
两个办法。
(1)联合查询(oracle写法,如为其他数据库自行修改,这里只提供思路)
select table.id,table.XXXXX,table.XXXXX,table.caption,table.XXXXX from table,(select id,max(caption) max_cap from table group by id) b where table.id=b.id and table.caption=b.max_cap
(2)组合查询
select * from table where id||'_'||caption in (select id||'_'||max(caption) max_cap from table group by id)
加_是为了方防止出现特殊情况,比如id=1,caption=130 和id=11,caption=30的情况出现
不知道你是什么数据库,||是Oracle的连接符,用于连接字符串,其他数据库应该也有类似的东西,这个就自己掌握吧
fuyh16
2019-07-30 · TA获得超过222个赞
知道小有建树答主
回答量:462
采纳率:82%
帮助的人:116万
展开全部
group by函数,允许查询出多列,你的sql语句中直接把多列都列出来就可以了
比如你的列有id,name,type,caption都想列出来,则
select id,name,type,max(caption) from table group by id

如果同一id下,你还想在想看某一类别下最大caption的数据,则group by 后面增加type就行了

select id,name,type,max(caption) from table group by id,type
更多追问追答
追问

你说的是这样的吗?这样的话两次结果条数是不一样的。应该只能查到777条数据的。

追答
我晕,前面那个sql语句,是你这道题的答案,后面那个,我的意识是,如果你还需要,对其他列,继续进行分组,就会用到
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hyx0077
2019-07-30 · TA获得超过126个赞
知道小有建树答主
回答量:297
采纳率:63%
帮助的人:43.3万
展开全部
把 where后面的caption=(select***)改为 caption in 就好了
-----
试下这个看看select * from table where caption = (select max(caption) from table group by id)把这个改成 select a.* from table a,(select max(caption),id from table group by id) b where a.id=b.id
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无野楼升域醉0t
2019-07-31 · TA获得超过8552个赞
知道小有建树答主
回答量:1498
采纳率:88%
帮助的人:490万
展开全部
select * from table where id = select id from(select id,max(caption) from table group by id)
这个意思么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蒙谨24
2019-07-30 · TA获得超过264个赞
知道小有建树答主
回答量:891
采纳率:62%
帮助的人:274万
展开全部
你没有select id ,为什么还要对id使用聚合函数
更多追问追答
追问
本来查(select max(caption) from MOS_SCSDATA_DETAIL_INFO group by id) 有77条数据,都展开的话有7200多条
追答
select id,max(caption)group by id有77条,加了字段变成select id,字段1,max(caption)group by id,字段1,结果会增加?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式