标题:求助子查询返回多条记录怎么处理
只看楼主
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:4 
Create cursor 表A (编号 I, 姓名 V(10))
Create cursor 表B (编号 I, 年月 N(8,2))

Insert into 表A (编号, 姓名) Values (1, '张三')
Insert into 表A (编号, 姓名) Values (2, '李四')
Insert into 表A (编号, 姓名) Values (3, '王五')

Insert into 表B (编号, 年月) Values (1, 1990.01)
Insert into 表B (编号, 年月) Values (2, 1990.02)
Insert into 表B (编号, 年月) Values (3, 2000.07)
Insert into 表B (编号, 年月) Values (2, 1990.05)

Select a.*, b.年月 from 表a a ;
inner join 表b b on a.编号 == b.编号 ;
inner join ( ;
    select 编号, Max(年月) 年月 from 表b group by 编号) c ;
    on b.编号 == c.编号 and b.年月 = c.年月
2023-03-20 18:14
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
得分:4 
Top 1 + Order By b.字段 [desc]
2023-03-20 18:20
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:4 
以下是引用sharpex1在2023-3-20 17:04:36的发言:

不是,B是另外一个表,想在A表 中返回 B表 X字段,条件 是 A.编号=b.编号,我的命令 sele *,(sele x from B wher a.编号=b.编号) from a ,这里出错,提示子查询返回多条记录,因为B编号有重复,所以想问下怎么 在这个   sele *,(sele x from B wher a.编号=b.编号) from a  基础上改一下,如果B返回多条记录,取X字段值较大那个

取B表中,X字段的最大值
select max(x) x ,编号 from b group by 编号
联合起来就是
select t1.*,t2.x from a t1;
inner join (select max(x) x ,编号 from b group by 编号) t2 ;
on t1.编号=t2.编号
2023-03-21 00:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511613-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054965 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved