VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 804|回复: 6

分组显示有没有更好的办法

[复制链接]

1

主题

4

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-10-9 12:30:02 | 显示全部楼层 |阅读模式
父表有50个字段,子表有100个字段,现在需要按父表的“编号”分组显示,但还需要显示子表中的一条对应信息即需要的是:

select 父表.*,子表.* from 父表 left join 子表 group by 父表.编号

的结果,但由于group by 需要有聚合函数,所以上述写法无法通过,现在即不想要向后兼容,又不想写出带聚合函数的所有字段,请问有什么更好的办法吗???

回复

使用道具 举报

1

主题

4

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
 楼主| 发表于 2020-10-9 12:45:02 | 显示全部楼层
我想到一个办法,就是剔除子表中“编号”重复的行,然后再和父表left join,这时,就不需要group by 了,因为对于父表来说 “编号”就是ID,是唯一的。

请问怎么剔除子表中“编号”重复的行呢??

这种方法可行吗??
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-10-9 15:45:02 | 显示全部楼层
--try

select 父表.* from 父表
left join
(
        select 编号 from 子表 group by 编号
)子表 on 父表.编号=子表.编号
回复

使用道具 举报

1

主题

4

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
 楼主| 发表于 2020-10-9 17:00:02 | 显示全部楼层
还需要显示子表中多条匹配内容中的一条记录啊

父表.*,子表.*

回复

使用道具 举报

0

主题

14

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-10-9 18:00:01 | 显示全部楼层
父表最好有唯一列或者主键
回复

使用道具 举报

1

主题

4

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
 楼主| 发表于 2020-10-9 21:00:01 | 显示全部楼层
“编号”在父表中,就是唯一的呀,子表通过“编号”和父表关联

现在就是要求显示父表中的所有记录,和显示子表中对应的多条记录的一条。
因为通过编号关联,子表可能有多个记录,现在只要求显示一条就可以了,这一条随意抽取

还不明白我的意思???

例如:
父表:
0601001  dd   bb
0601002  cc   wa
.....
子表:
0601001  11  22
0601001  22  13
0601001  a3  d2
0601002  a2  sz
0601002  d2  d2
.....

现在要的结果类似:
0601001  dd   bb  11  22
0601002  cc   wa  d2  d2

上面是举例,实际父表50个字段左右,子表100个字段左右
回复

使用道具 举报

0

主题

14

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-10-9 22:45:02 | 显示全部楼层
给你个参考
use pubs
go
select * from  jobs j left join
(select * from employee where emp_id in
(select min(emp_id) from employee group by job_id)) e on j.job_id =e.job_id  order by j.job_id
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表