sql A,B两表连接,B表中重复记录只取一条

A表字段 id,name
B表字段 id,tit,Aid
(B表中Aid即是A表中id)
现在要查A表中数据,根据A表中id,到B表中取一条Aid=A表中id的记录,只取一条。
select A.name,B.tit from A left join B on A.id=B.Aid 这是我写的重复了
问题是要B表中Aid不要重复,只对应A表中id取一条就可以了
内连接也可以
select A.name , B.tit from A inner join B on A.id = B.Aid

那就用显示B表排除他的重复项,再去用A表去匹配他,左连接得出匹配的项
Select * From (Select Distinct B.* From B) as 查询1 Left Join A on 查询1.id=A.id where(B.id IS NOT NULL);
要先把B表重复项整理掉,再去匹配,还要把NULL项去掉
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-14
select A.name,c.tit from (SELECT * from b where id in(select min(id) from b GROUP BY aid))as c left join a on A.id=c.aid

效果不敢保证 多测试下吧。 有更好的方法记得告诉我下就行了。
第2个回答  2012-10-13
select DISTINCT A.name,B.tit from A,B where A.id=B.Aid
使用关键字DISTINCT 就可以去除重复记录
第3个回答  推荐于2017-11-25
select A.name , MAX(B.tit ) AS tit
from A inner join B on A.id = B.Aid
group by A.id本回答被提问者采纳
相似回答