[英]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.id
和ass.id_buyer
分組,我試過將count(*)
更改為count(b.id)
。
沒用。 我該如何解決,這樣才算buyers
?
使用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)
以便它選擇特定的分配日期,而不僅僅是從任何分配中選擇隨機日期。
使用權外加入:
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.