请问各位大虾,表A和B,B是A的子表,A与B是一对多的关系,我如何联合查询得到A与B一对一(A里一条数据对应B里最后插入的那条记录,当然B中有添加时间字段),
恳请高手指教。

解决方案 »

  1.   

    假设id为关联字段
    select A.* from A,B where A.id=B.id and A.UpdateTime=B.UpdateTime
      

  2.   

    比方说: A表有AutoId(主键 外键),姓名,年龄... B表中有AutoId,PersonId(A.AutoId),迟到时间,迟到原因... A表是人员信息,B表是人员迟到信息,一个员工对应N条迟到信息,那么如果我想得到某员工的姓名,(最后迟到的)时间,迟到原因 该怎么查询呢?
    对 mapserver(杨东 http://mapserver.cnblogs.com) 表示感谢.
      

  3.   

    或者 可以在B表中添加一标示字段 每次添加迟到信息 Update该人员的所有迟到信息的标示
      

  4.   

    select A.* from A,B where A.id=B.id and B.UpdateTime=(select max(B.UpdateTime)from A,B where B.id="4443" )
      

  5.   

    select a.*,b.*
    from a,b as b1
    where a.id= b.id
    not exists (select 1 from b where b.时间字段> b1.时间字段)
      

  6.   

    hu0516(专业接分) Thank you
    你的回复可以查到某一条记录 如果我想得到所有员工的 列表呢?
      

  7.   

    select top 1 A.*,B.* FROM A,B where A.AutoId = B.PersonId order by B.迟到时间 desc
      

  8.   

    hu0516(专业接分) Thank you
    你的回复可以查到某一条记录 如果我想得到所有员工的 列表呢?select  A.*,B.* FROM A,B where A.AutoId = B.PersonId
      

  9.   

    QQMagicer(在IT的路上越走越远), showrock(玉蝴蝶) 谢谢!!
      

  10.   

    如果你的UpdateTime的值没有重复值,这样就可以了
    select A.*,b.* from A,B where A.id=B.id and B.UpdateTime in(select max(B.UpdateTime),B.id from B group by B.id) 
      

  11.   

    select aa.*,bb.* from A aa left join B bb on bb.PersonId=aa.AutoId and bb.AutoId=(select top 1 AutoId From B where PersonId=bb.PersonId order by UpdateTime desc)
      

  12.   

    问题已经解决了.
    SELECT * FROM A INNER JOIN (SELECT B.PersonId,MAX(迟到时间) AS TIME FROM B GROUP BY B.PersonId) AS P ON A.AutoId = P.PersonId