我不知道如何写下这个查询, 所以我要求你的家伙和女士帮忙。
所以,我有一个包含类似内容的表:
列 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!
答案 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)
但这是一个非常缓慢的查询。只是为了给你一个想法...