两个表是一(A表)对多(B表)的关系,join的时候,B表只对应显示第一条数据(某些条件)。sql该如何写?

表AAidtitledays1清远二天游22东莞一天游13深圳小梅沙二天2表BBidBAidprice1152202133303120041300524654662555... 表A
Aid title days
1 清远二天游 2
2 东莞一天游 1
3 深圳小梅沙二天 2

表B
Bid BAid price
1 1 5220
2 1 3330
3 1 200
4 1 300
5 2 46546
6 2 555
7 2 55
8 2 5552
9 3 333
10 3 3330
11 3 444
12 3 444
13 3 4444

2个表通过通过Aid=Baid连接

期待的结果:

a.aid b.baid b.bid a.title a.days b.price
1 1 1 清远二天游 2 5220
2 2 5 东莞一天游 1 46546
3 3 9 深圳小梅沙二天 2 333
aid内容相同的数据只显示一条。
展开
 我来答
iambise
2011-12-23 · TA获得超过714个赞
知道小有建树答主
回答量:834
采纳率:50%
帮助的人:505万
展开全部
那你可以先处理B表的数据,使其每个BAidu只有一条记录,然后再和表A关联。按你现在的需要
select a.aid,t.baid,t.bid,a.title,a.days,t.price from a left join (select * from b inner join (select min(Bid) as Bid group by BAid) v on b.Bid = v.Bid) t on a.Aid = t.BAid
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
syht2000
高粉答主

2011-12-23 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
select a.aid,a.title,a.days,b.price from 表A a,(select min(bid) as bid, BAid,min(price) as price from 表B group by BAid) b where a.aid=b.baid
追问
大侠。您提供的语句,可用。谢谢。
(select min(bid) as bid, BAid,min(price) as price from 表B group by BAid) b
再请问一下,上面的语句select和from之间的字段名是否不能使用星号,如果有很多字段,是否就很杯具了??
追答
这样的话可能要改一下,变成
select a.*,b.* from 表A a,表B b where a.aid=b.baid and b.bid in (select min(bid) as bid from 表B group by Baid)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式