比较字段值与出现次数

时间:2011-04-11 08:38:09

标签: mysql

我不知道如何写下这个查询, 所以我要求你的家伙和女士帮忙。

所以,我有一个包含类似内容的表:

ID,关键字的网页

我基本上需要的是获取所有页面的行!= count(关键字) 这基本上是我试图去做的。

所以它应该非常简单,返回所有行,其中关键字count不等于pages列值。

所以,例如,如果数据是这样的:

ROW A: 1, aaa, 3
ROW B: 4, aaa, 3
ROW C: 5, aaa, 3
ROW D: 5, aac, 100

如上所示, 由于行a,b,c PAGES(3)与关键字计数匹配,因此只返回ROW D.

欢迎任何帮助。 THX!

2 个答案:

答案 0 :(得分:4)

没有子查询的解决方案。这将在Mysql中运行filne,但是对于更严格的SQL,你需要添加一些聚合函数。

SELECT a.*
FROM mytable AS a
    LEFT JOIN mytable AS b
        ON b.keyword = a.keyword
GROUP BY a.id
HAVING COUNT(b.id) != a.pages

还使用以下索引:

CREATE INDEX myindex ON mytable (keyword);
CREATE INDEX myindex2 ON mytable (pages);

答案 1 :(得分:2)

select *
from table t1
where t1.pages <> (select count(*)
                     from table t2
                    where t1.keyword = t2.keyword)

但这是一个非常缓慢的查询。只是为了给你一个想法...