mysql左连接问题

时间:2010-12-15 07:30:43

标签: sql mysql

我有2张桌子

Table: Users
      userid (int, PK)
      name (varchar)
      type (enum)

Table: Sales
      salesid (int)
      productid (int)
      userid (int, FK)

我需要输出

 User Name                                  Sales Count
    ABC                                         5
    BCD                                         0
    EFG                                         1

我需要来自“用户”表的所有用户具有特定类型(如a,b,c)和销售数量(如果没有销售,则为0)

SELECT users.name
       , count( sales.salesid ) 
FROM users 
   LEFT JOIN sales 
   ON users.userid = sales.userid 
 WHERE type = 'a'

以上查询的问题是,它只显示那些有销售的用户,我需要具有特定类型的所有用户,无论他们是否有销售

由于

2 个答案:

答案 0 :(得分:2)

您是否错过了GROUP BY子句?对于大多数SQL方言,你需要它,并且在我正在使用的(通常相当老的)MySQL中,它必须存在,否则你会收到错误。只需在最后添加“GROUP BY users.name”,它就可以正常工作。

答案 1 :(得分:1)

尝试:

SELECT users.name, count( sales.salesid ) 
FROM users 
   LEFT JOIN sales 
   ON (users.userid = sales.userid AND type = 'a')