a表:
 com_id           companyname
    1              A新闻社
    2              B新闻社
    3              C新闻社b表:
  news_id         com_id          news_title
     1               1               标题1
     2               1               标题2
     3               2               标题3
     4               2               标题4
     5               3               标题5
     6               3               标题6结果:
  news_id         com_id          news_title
     1               1               标题1
     3               2               标题3
     5               3               标题5也就是在B表中在每个新闻社里各取一条新闻出来。
请问这个查询应该怎么写?

解决方案 »

  1.   

    select top 1 news_id        com_id          news_title form b where com_id=1
    select top 1 news_id        com_id          news_title form b where com_id=2
    select top 1 news_id        com_id          news_title form b where com_id=3
      

  2.   

    select 
          *
    from 
          b
    where 
         id in (
         select 
               min(news_id) 
         from 
               b 
         group by 
               com_id
         )
      

  3.   

    select a.* from @b a where [news_id] = (select min([news_id]) from @b where [com_id] = a.[com_id]) order by a.[com_id]
      

  4.   


    --@b为b表
    select a.* from @b a where not exists(select 1 from @b where [com_id] = a.[com_id] and [news_id] < a.[news_id])
      

  5.   

    楼上的不错。
    或者:
    select com_id,news_id from b b1 where news_id=(select top 1 news_id from b b2 where b2.com_id=b1.com_id order by news_id)这样没用in操作和group by,效率会更高。
      

  6.   

    还是popule_daisy 的方法最简单,谢谢各位了。