$sql = 'SELECT COUNT(*) ' .
" FROM goods_sku AS gs ".
" LEFT JOIN goods_log  AS gl  ON gl.sku_id = gs.sku_id 
                                           WHERE gl.date>'2011-05-11 14:03:00' AND gs.date>'2011-05-11 14:03:00";
要做这样的查询,以goods_sku为主表, goods_log为从表查询,但是goods_log里的sku_id和goods_sku里的sku_id是多对一的关系,所以这样查询的结果肯定不对(我要的是goods_sku里符合条件的数据,而且取出的结果sku_id不重复),现在这样有重复值,该怎么操作才行?

解决方案 »

  1.   

    第一:你这个其实还有一个条件不明确,假如你根据条件查出的数据同时有多条sku_id是相同的,那你是只需其中一条还是以什么条件再进行筛选第二:如果是只需要其中一条,那很简单,分组一下,然后在having后加入条件,即可满足你的要求,而如果是还需要根据条件找,你可以用PHP来解决这个问题,并不一定说需要MYSQL来解决
      

  2.   

    SELECT COUNT(distinct gs.sku_id) 
      

  3.   

    SELECT gs.sku_id,gl.sku_id  FROM ecs_goods_sku AS gs  LEFT JOIN ecs_goods_log  AS gl  ON gl.sku_id = gs.sku_id GROUP BY gl.sku_id怎么能够得出这个select结果的总数?
      

  4.   


    这种你都可以用子查询来解决select count(*) from 
    (
     SELECT gs.sku_id,gl.sku_id  FROM ecs_goods_sku AS gs  LEFT JOIN ecs_goods_log  AS gl    ON gl.sku_id = gs.sku_id GROUP BY gl.sku_id
    ) tmp
    ;中间换成其他查询也一样