我想查询一个主栏目下面的每个子栏目中最新的一条新闻
表结构:栏目表(channel)CHN_ID,CHN_NAME,PARENT_ID
        新闻表(article)id,CHN_ID,TITLE,CREATE_TIME

解决方案 »

  1.   

    PARENT_ID指定的是属于哪个主栏目
      

  2.   

    表结构:栏目表(channel)CHN_ID,CHN_NAME,PARENT_ID 
            新闻表(article)id,CHN_ID,TITLE,CREATE_TIME
      

  3.   

      select *
        from (select CHN_ID,id,
                     TITLE,
                     CREATE_TIME,
                     row_number() over(partition by CHN_ID order by id desc) r
                from article)
       where r = 1或
      select *
        from (select CHN_ID,id,
                     TITLE,
                     CREATE_TIME,
                     row_number() over(partition by CHN_ID order by CREATE_TIME desc) r
                from article)
       where r = 1参考 oracle 分析函数。 开窗函数。
      

  4.   

    如果是某一主栏目 加上 where PARENT_ID=:PARENT_ID 
    select * 
        from (select CHN_ID,id, 
                    TITLE, 
                    CREATE_TIME, 
                    row_number() over(partition by CHN_ID order by CREATE_TIME desc) r 
                from article  where PARENT_ID=:PARENT_ID) 
      where r = 1 
      

  5.   

     select * 
        from (select CHN_ID,id, 
                    TITLE, 
                    CREATE_TIME, 
                    row_number() over(partition by CHN_ID order by id desc) r 
                from article) 
      where r = 1 或 
      select * 
        from (select CHN_ID,id, 
                    TITLE, 
                    CREATE_TIME, 
                    row_number() over(partition by CHN_ID order by CREATE_TIME desc) r 
                from article) 
      where r = 1 
      

  6.   

     SELECT A.CHN_NAME 主栏目名,
                 B.CHN_NAME 副栏目名,
                 T.TITLE,
                 T.CREATE_TIME
            FROM ARTICLE T, CHANNEL A, CHANNEL B
           WHERE T.CHN_ID = B.CHN_ID
             AND B.PARENT_ID = A.CHN_ID
             AND T.CREATE_TIME IN
                 (SELECT MAX(T.CREATE_TIME) FROM ARTICLE T GROUP BY T.CHN_ID)
      

  7.   


    select a.chn_id,a.chn_name,a.parent_id,b.id,b.title,b.create_time from 
        channel a left join article b      
        on a.chn_id=b.chn_id and
            b.create_time is in(select max(create_time) from article group by chn_id)
          将article表中每个栏目的最新新闻接在channel表对应的栏目后面