SQL两表查询不重复记录

来源:百度知道 编辑:UC知道 时间:2024/05/31 15:05:26
表A
aid aname
1 a
2 b
3 c

表B
bid aid bname btime
1 1 aa aa
2 1 bb bb
3 3 cc cc
4 1 dd dd
5 2 ee ee
6 3 ff ff

本人想联合查询不重复aid的记录,想提取aname的字段又能获取表B的某一条行记录,一条SQL语句怎么写???
bname btime aname
aa aa a
cc cc c
ee ee b
本人在做GRIDVIES数据绑定,只显示不重复的aname标题,然后再根据这个标题条件连接跳转到另外一个页面所查询到的B表相关信息

select min(b.bname) as bname, min(btime) as bname ,a.aname from table1 a
left join table2 b on a.aid=b.aid
group by a.aid, b.aid, a.aname

没看懂什么意思!你这不重复aid是什么意思,你是要不重复的都不显示出来还是只显示其中一条! 你把查询的最终结果贴出来!

select bname, btime ,aname from a join b on a.aid=b.aid group by bname, btime ,aname

这个肯定对,不过可能效率不高,应该还有更好的写法
select t1.bname, t1.btime, t3.aname
from b t1 inner join a t3
on t1.aid = t3.aid
where exists (
select 1 from (
select min(bid) as bid, aid
from b
group by aid) t2
where t1.bid = t2.bid and t1.aid = t2.aid)
order by t1.bid

楼上的写法有问题
楼主给的数据因为所有的bname和btime相同
所以看起来才会有正确的结果
如果不同,min(bname)和min(btime)得到的值又不在一条数据里面