日期:2014-05-18  浏览次数:20723 次

数据库两个表联合查询,求高手解答.急急急
A表:

3711021994 张三 ………………
3711021989 李四 ………………

B表:

3711021994 男 2008毕业 2012.06.27
3711021994 女 2010毕业 2012.06.28



联合查询
3711021994 张三 男 2010毕业
3711021989 李四 NULL NULL


------解决方案--------------------
select * from A表 left join B表 on A表.[学号?] = B表.[学号?]
------解决方案--------------------
只能说你数据的插入有问题,如果真的是相同数据,原本就不该入库,3711021994这种编号应该是一对一的,即便出现两个张三(一男一女),那么也应该是出现在A表,而不是B表,设计有问题
------解决方案--------------------
探讨
引用:

select * from A表 left join B表 on A表.[学号?] = B表.[学号?]


那会出现重复数据的
3711021994 张三 男 2010毕业
3711021994 张三 男 2008毕业
3711021989 李四 NULL NULL

------解决方案--------------------
select a.*,b.* from A表 as a inner join B表 as b on a.学号=b.学号
------解决方案--------------------
无论做什么,都应该看到事情的本质和源头,一些数据本来就是不可能存在的或者毫无意义的,那么应当控制良好的输入,而不是处理繁杂的输出,这么对于查询来说也是见好事.
------解决方案--------------------
查询结果:有问题啦~2010年毕业的是个女的 怎么还显示是个男
------解决方案--------------------
select *,(select top 1 sex from tblB where aid=tblA.id order by 主键 desc) as 性别,*,(select top 1 毕业日期 from tblB where aid=tblA.id order by 主键 desc) as 毕业日期 from tblA