我有两张桌子
1.Applicants表(id,name)
2.posts table(id,post_name,applicant_id)
如果我进行内部联接,我将会收到有帖子的申请人({COID} applicants
posts
posts
applicant_id
applicants
id
{{1}} {1}}。{{1}})。
现在我需要做些什么才能找到没有任何帖子的申请人。
答案 0 :(得分:2)
您需要outer join
和HAVING
子句
SELECT
a.id
, COUNT(p.applicant_id) post_count
FROM applicants a
LEFT OUTER JOIN posts p
ON a.id = p.applicant_id
GROUP BY
a.id
HAVING COUNT(p.applicant_id) = 0
实际上你不需要分组,这就足够了:
SELECT
a.id
FROM applicants a
LEFT OUTER JOIN posts p
ON a.id = p.applicant_id
WHERE p.applicant_id IS NULL
答案 1 :(得分:0)
如果您需要没有帖子的申请人,那么您需要这个
SELECT
a.*
FROM applicants a
LEFT OUTER JOIN posts p
ON a.id = p.applicant_id
WHERE p.applicant_id IS NULL
当您必须显示有帖子的申请人时,您需要将LEFT OUTER JOIN更改为INNER JOIN。
如果您需要两个不关心申请人的帖子,那么左连接将适合您
SELECT
a.*,p.*
FROM applicants a
LEFT OUTER JOIN posts p
ON a.id = p.applicant_id
注意: - *必须更改列名以获得最佳做法。
答案 2 :(得分:0)
试试这个:
select a.id,count(p.applicant_id)
from applicants a left outer join posts p
ON a.id=p.applicant_id
where p.post_name is null
group by a.id