简体   繁体   English

Mysql:依赖于列的COUNT()的WHERE语句?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM