表A  id name fenshu zongfen
表B  id tongji2张表没有主外键,只是单纯的2张表我想查询表A和表B表A查询全部数据 表B只查询最新插入tongji的一条记录select A.*, b.tongji from   A
left join B  on A.Id=b.Id 我只想查B表的第一条记录,其他的不查,应该怎么修改,或者用其他方法?谢谢!

解决方案 »

  1.   


    select A.*, b.tongji 
    from A
       left join 
      (select * from B t where not exists (select 1 from B where tongji = t.tongji and id > t.id))B 
       on A.Id=b.Id
      

  2.   

    AcHerat 谢谢
    可是方法不行。还是会查询到tongji其他数据B表tongji下有很多数据 我只想查询到它最新插入的一条数据如
    id  tongji
    1    300
    2    500
    3    600我只想查到 tongji  “600” 这个数据 其他数据我不要,。谢谢!
      

  3.   

    --如果b表中的id是自增长的也行
    select top 1 b.tongji,a.* from b left join a on b.id=a.id order by b.id desc
      

  4.   

    --B最新插入tongji的一条记录只出现一次
    select A.*, b.tongji from A
    left join B on A.Id=b.Id  
    and not exists (select 1 from B as tb where tb.id>B.id)--B最新插入tongji的一条记录和A表记录全部并列显示
    select A.*, b.tongji from A,B 
    where not exists (select 1 from B as tb where tb.id>B.id)
      

  5.   


    select A.*, b.tongji 
    from A
       left join 
      (select top 1 * from B order by id desc)B 
       on A.Id=b.Id
      

  6.   

    select  表a.*,表c.tongj form  表a 
    left join (select top 1 * from 表b order by id desc ) 表c
    on 表a.id=表c.id
      

  7.   

    select A.*, (select top 1 b.tongji from B where A.Id=b.Id order by 2 desc)
    from A
      

  8.   

    select A.*, b.tongji from A,B where A.id=b.id and b.id=(select top 1 id from B order by id asc)
    用这个,包OK。
      

  9.   

    SELECT A.*, C.tongji FROM A
    LEFT JOIN (SELECT id,tongji FROM B WHERE b.id=(SELECT MAX(id) FROM B)) AS C ON A.Id=C.Id  
      

  10.   


    select * from A where id=(select top 1 id from B)
      

  11.   

    select * 
    from A 
    where id=(select top 1 id from B)
      

  12.   

    select A.*, b.tongji from A
    left join (select top 1 * from B order by id desc)b on A.Id=b.Id