select id ,c.ENDDATE,c.ROOTPID,c.TASKNAME
from tbs.tbs_fun_apprc c 
    where '990099' = c.ROOTPID group by TASKNAME  order by C.ENDDATE ;
id      ,       ENDDATE,                ROOTPID, TASKNAME,
7012 2018-02-01 10:55:01 990099 法务
7013 2018-02-01 10:55:10 990099 风管
7014 2018-02-01 10:55:34 990099 出纳
7015 2018-02-01 10:55:52 990099 支付
7033 2018-02-01 13:09:09 990099 财务
7034 2018-02-01 13:09:17 990099 风管
7035 2018-02-01 13:09:24 990099 分管
select id ,c.ENDDATE,cc.ENDDATE ,c.ROOTPID,cc.ROOTPID,c.TASKNAME,cc.TASKNAME
from tbs.tbs_fun_apprc c 
    INNER JOIN 
(select ENDDATE,ROOTPID,TASKNAME from tbs.tbs_fun_apprc group by TASKNAME ) cc on  cc.ENDDATE = c.ENDDATE
    where '990099' = c.ROOTPID   order by C.ENDDATE;
id      ,       ENDDATE,                ROOTPID, TASKNAME,如果使用inner join 后 理论上应该有相同的结果,但是却查不到数据,也没有报错,这是为什么

解决方案 »

  1.   

    select id ,c.ENDDATE,c.ROOTPID,c.TASKNAME
        from tbs.tbs_fun_apprc c 
        where '990099' = c.ROOTPID group by TASKNAME  order by C.ENDDATE ;
    不进行统计,然后用GROUP BY TASKNAME  没意义
      

  2.   

    这又是 MySQL ? 如果是 sql server,第一个查询根本无法执行
    如果真是 MySQL, 那么很容易解释,你的第一个查询,是明确查 '990099' = c.ROOTPID 的数据
    而第2个查询中的子查询,是所有数据,所以无法保障子查询返回的 ENDDATE 是匹配外层查询 '990099' = c.ROOTPID 对应记录的 ENDDATE
      

  3.   

    select ENDDATE,ROOTPID,TASKNAME from tbs.tbs_fun_apprc group by TASKNAME
    Group By 一个字段,前边查3个字段,其中两个还不是聚合函数,建议你去my sql板块去,这种写法,sql server会报错、
      

  4.   

    mysql 严格貌似也会报错~