簡體   English   中英

從兩個表中選擇帶有左聯接計數的計數

[英]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

使用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 JOININNER 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM