有一company表 companyID ,companyName,c_stauts 与 posts表 postsID,companyID ,postName,createTime,p_status
posts中companyID 关联company表中companyIDposts表为发布的职位 要求 查询companyID ,companyName
条件:
c_stauts=1 ,p_status=1,以createTime为倒序
以companyID分组 取每个公司 前一条信息
即 companyID ,companyName不重复

解决方案 »

  1.   

    select distinct c.companyID,c.companyName,c.c_stauts,p.postsID,p.postName,p.createTime,p.p_status
    From company c,posts p Where c.companyID=p.companyID and c.c_stauts=1 and p.p_stauts=1 Order by c.createTime DESC
      

  2.   

    好菜啊,我写不出来,55555……
    select p.companyID,c.companyName
    from posts p
    left join company c
    on c.companyID=p.companyID
    where c.c_stauts=1 and p.p_status=1
    order by p.createTime desc
      

  3.   

    select distinct c.companyID,c.companyName From company c,posts p Where c.companyID=p.companyID and c.c_stauts=1 and p.p_stauts=1 group by c.companyID,c.companyName Order by c.createTime DESC
     试试,没测试!!
      

  4.   


    我帮你试了!
    消息 207,级别 16,状态 1,第 1 行
    列名 'p_stauts' 无效。
    消息 207,级别 16,状态 1,第 1 行
    列名 'createTime' 无效。
    消息 145,级别 15,状态 1,第 1 行
    如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中。

      

  5.   

    如果不用做汇总一般用distinct 这个就够了,已经可以达到区分的效果
      

  6.   

    select distinct c.companyID,c.companyName 这样是OK的 但是Order by c.createTime DESC
    后 要变成select distinct c.companyID,c.companyName, c.createTime 
    时间基本是唯一的 distinct 就不好使了
    所以 仍然会出现重复的数据 
      

  7.   


    select top 1 * from(
    select p.companyID,c.companyName
    from posts p
    left join company c
    on c.companyID=p.companyID
    where c.c_stauts=1 and p.p_status=1
    order by p.createTime desc
    ) group by companyID
      

  8.   

    select z.companyId,z.companyName from (select top 1 c.companyId,companyName from company c left join posts s on c.companyId=s.companyId where c_status=1 and p_status=1 order by createTime desc) z group by z.companyName,z.companyId