我已经在SO上阅读了很多答案,但仍然无法使其发挥作用。我很确定我需要一个子查询,但不知道我应该从哪里开始...
这是我想要做的可读/伪装:
SELECT DISTINCT cat_sub.*, COUNT(job.job_id) AS num_properties_which_meet_criteria
FROM cat_sub
LEFT JOIN job_cat USING (sc_id)
LEFT JOIN job USING (job_id)
WHERE job.village_id=2 AND num_properties_which_meet_criteria > 0
GROUP BY sc_id
我正在尝试使WHERE
引用job
表中的有效结果数量,在这个例子中是job.village_id=2
匹配的结果。
所以只是为了说清楚,我不希望连接匹配的总行数。我希望连接匹配的总行数达到WHERE
条件。
非常感谢任何帮助!
答案 0 :(得分:6)
使用HAVING子句测试聚合函数的值。
SELECT DISTINCT cat_sub.*, COUNT(job.job_id) AS num_properties_which_meet_criteria
FROM cat_sub
LEFT JOIN job_cat USING (sc_id)
LEFT JOIN job USING (job_id)
WHERE job.village_id=2
GROUP BY sc_id
HAVING COUNT(job.job_id) > 0
答案 1 :(得分:3)
使用having
代替where
:
WHERE job.village_id=2
GROUP BY sc_id
HAVING num_properties_which_meet_criteria > 0
答案 2 :(得分:2)
你有没有尝试过:
SELECT DISTINCT cat_sub.*, COUNT(job.job_id)
FROM cat_sub
LEFT JOIN job_cat USING (sc_id)
LEFT JOIN job USING (job_id)
WHERE job.village_id=2
GROUP BY sc_id
HAVING COUNT(job.job_id) > 0
更新:删除了别名
答案 3 :(得分:2)
您需要有一个“HAVING”子句,在那里您可以使用查询的SELECT部分中使用的聚合函数的条件。