我有二个表,结构如果下a 表
 
id,sku,name,statusa表有2776 条记录b 表product_id ,p_num,p_name,status
B表有49,475多条记录,很多是重复我用了left join 查询两个表
大概如下select b.p_name,a.id,count(DISTINCT b.p_num) from a left join b on a.sku=b.p_num where b.status=1 group by p_num按正常来说left join 最少有2776 条记录啊,可是结果才2668 。这是为什么呢??

解决方案 »

  1.   

    你执行如下语句看看结果是不是 2668:select distinct p_num
    from b
    where b.status = 1
    另外,你的语句中 group by p_num,不是以 a 表为准,所以结果不一定是 a 中的数量了。
      

  2.   

    group by p_num 你已经做GROUP了。
      

  3.   


    没办法group by 啊我要去掉重复的,又想得到其他的字段,不知道有没有其他好的办法
      

  4.   

    "select b.p_name,a.id,count(DISTINCT b.p_num) from a left join b on a.sku=b.p_num where b.status=1 group by p_num
    "
    如果你要查的语句没有错话,你应该修改为如下:
    select b.p_name,a.id,count(DISTINCT b.p_num) from a left outer join b on a.sku=b.p_num where b.status=1 group by p_num在"left join"里加入" outer ",这样才是对的.