table
-- t_id_with_data_and_count
column
-- f_id , f-data , f_count
它是多对多地图table
(任何地图都id
可以具有任意数量的记录(f_id
并且记录和记录f_data
在本质上是唯一的))
SELECT * FROM t_id_with_data_and_count where f-data IN ('PHP','JAVA') GROUP BY 1 HAVING COUNT(*)= 2 AND f_count >=17
预期结果:我期待它应该返回我谁是有所有IDphp
和java
和的数php
,java
> =17
结果现在越来越:让所有与两个IDSphp
和java
,但指望它正在检查java
而已,如果计数java
为> = 17,它抛出我的结果。
但是我在寻找它也应该检查计数 php
由于您通过分组f_id
,f_count
在havinf子句中具有“ PHP”或“ JAVA”行的值。
您需要检查的f_count
是> = 17,并且f_count
s的总和> =(17 +“ arbitrary” f_count
)。
(换句话说:如果f_id
有两个“PHP”和“JAVA”的行和所述之一f_count
s是> = 17和两者的总和f_count
s是> =(17 +的一个f_count
(即我们检查是> = 17)然后我们找到了一个匹配项!)
SELECT *
FROM t_id_with_data_and_count
WHERE f_data IN ('PHP', 'JAVA')
GROUP BY f_id
HAVING COUNT(f_id) = 2
AND f_count >= 17
AND SUM(f_count) >= f_count + 17
另请参见此简短演示。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句