sql - 怎么只取join另外一张表的一行数据 ?

查看:1039
本文介绍了sql - 怎么只取join另外一张表的一行数据 ?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

简化下是这样的情形

a表
no
1
2
3

b表
no item
1 q
1 w
1 e
2 q
2 w
3 w
3 e

select a.*,b.item from a left join b on a.no = b.no

比如a.no是一张单号,b.item是物品,在b中,一个no可能有多个item,于是取出来的数据中可能有多条a.no是重复的行,但是我现在只想取得到的item的第一条,使a.no不会重复,应该怎么写?

我想取出来的结果是
1 q
2 q
3 w

解决方案

在b中,一个no可能有多个item,可以先写个group by子查询,将no,item变成一对一,如同一个no中,item取最小值

select no, min(item) from b group by no

然后用在这个子查询和a表进行关联

select a.*, c.min_item from a left join (
  select no, min(item) as min_item from b group by no  
)  c on a.no = c.no

这篇关于sql - 怎么只取join另外一张表的一行数据 ?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆