簡體   English   中英

MySQL JOIN需要附加條件

[英]MySQL JOIN Needs Additional Condition

我有兩個表,一個工作表和一個申請人表。 申請人表有一個包含應聘職位的字段。 我的查詢似乎很接近,只是它只返回已應用的作業。 我想要的是所有活動職位的顯示,並且還有一列顯示申請人數量。 有些職位沒有應聘者,而我的查詢未涵蓋這些職位。

SELECT * , COUNT(*) as total
FROM `job` 
INNER JOIN applicants 
ON applicants.position_id=job.id
WHERE active = 'yes'
GROUP BY position_id
ORDER BY title

您需要查詢的left join和其他小的解決方案:

SELECT j.*, COUNT(a.position_id) as total
FROM `job` j LEFT JOIN
     applicants a
     ON a.position_id = j.id
WHERE j.active = 'yes'
GROUP BY j.id 
ORDER BY j.title;

更改為:

  • 引入了表別名(使查詢更易於編寫和閱讀)。
  • 將表別名用於所有列引用。
  • select更改為j.*而不是* 由於group by原因,僅職位信息是合適group by
  • group by更改為j.id ,因此它永遠不會通過NULL聚合。
  • 更改了count()以計算匹配項。

正如其他人提到的那樣,您的聯接必須是外部聯接。

但是,通過簡單的查詢,您可以輕松地僅從作業中進行選擇,並在select子句中獲取應用程序計數。 這樣您就可以使查詢更具可讀性。

select 
  job.*,
  (select count(*) from applicants where position_id = job.id) as total
from job
where active = 'yes'
order by title;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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