Select 从两个表中使用左连接计数

Select count with left join counting from both tables

我有以下查询:

select count(*) as `count`, ass.date_assigned as date_assigned
from `buyers` as b
left join `assignments` as ass on (ass.id_buyer = b.id)

我只想用这个来计算总数buyers。问题是它似乎也在计算所有 assignments

我试过按 b.idass.id_buyer 分组,我试过将 count(*) 更改为 count(b.id)

没有任何效果。我该如何解决这个问题,让它只计算 buyers?

使用右外连接:

select count(*) as `count`, ass.date_assigned as date_assigned from `buyers` as b right outer join `assignments` as ass on (ass.id_buyer = b.id)

使用COUNT(DISTINCT):

SELECT COUNT(DISTINCT b.id) AS count, MAX(a.date_assigned) AS last_date_assigned
FROM buyers AS b
INNER JOIN assignments AS a ON a.id_buyer = b.id

我也从 LEFT JOIN 更改为 INNER JOIN,这样它只会计算有任务的买家(否则为什么要加入 assignments?)。并使用 MAX(a.date_assigned) 以便它选择一个特定的分配日期,而不仅仅是来自任何分配的随机日期。