[英]Mysql: WHERE statement that depends of the COUNT() of a column?
I've read loads of answers on SO, but still can't get this to work. 我已经在SO上阅读了很多答案,但仍然无法使其发挥作用。 I'm pretty sure I need a subquery but don't know where I should begin... 我很确定我需要一个子查询,但不知道我应该从哪里开始......
Here's readable/psuedo of what i want to do: 这是我想要做的可读/伪装:
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
I'm trying to make my WHERE
reference the amount of valid results in the job
table, which in this instance are those which match job.village_id=2
. 我正在尝试使我的WHERE
引用job
表中的有效结果数量,在这个例子中是与job.village_id=2
匹配的job.village_id=2
。
So just to make clear, i don't want the total number of rows matched by the join. 所以只是为了说清楚,我不希望连接匹配的总行数。 I want to total num rows matched by the join and meeting the WHERE
criteria. 我希望连接匹配的总行数和满足WHERE
标准。
Really appreciate any help! 非常感谢任何帮助!
You test the value of an aggregate function with a HAVING clause. 您使用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
Use having
instead of where
: 用having
代替where
:
WHERE job.village_id=2
GROUP BY sc_id
HAVING num_properties_which_meet_criteria > 0
Did you try: 你试过了吗:
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
UPDATE: Removed alias 更新:删除了别名
您需要有一个“HAVING”子句,在那里您可以使用查询的SELECT部分中使用的聚合函数的条件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.