Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将字段值与出现次数进行比较_Mysql - Fatal编程技术网

Mysql 将字段值与出现次数进行比较

Mysql 将字段值与出现次数进行比较,mysql,Mysql,我不知道怎么写下这个问题, 所以我请求你们的朋友们帮忙 因此,我有一个表,其中包含如下内容: 纵队 id、关键字、页面 我最基本的需要是把所有的行都放在页面上=countkeyword 不管怎样,我基本上就是这样做的 所以它应该非常简单,返回所有行,其中关键字计数不等于pages列值 例如,如果数据如下所示: ROW A: 1, aaa, 3 ROW B: 4, aaa, 3 ROW C: 5, aaa, 3 ROW D: 5, aac, 100 以上述为例,, 由于第3页的a、b、c行与关键

我不知道怎么写下这个问题, 所以我请求你们的朋友们帮忙

因此,我有一个表,其中包含如下内容:

纵队 id、关键字、页面

我最基本的需要是把所有的行都放在页面上=countkeyword 不管怎样,我基本上就是这样做的

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

例如,如果数据如下所示:

ROW A: 1, aaa, 3
ROW B: 4, aaa, 3
ROW C: 5, aaa, 3
ROW D: 5, aac, 100
以上述为例,, 由于第3页的a、b、c行与关键字计数匹配,因此只返回D行

欢迎任何帮助。 谢谢

但这是一个相当慢的问题。只是给你一个想法


但这是一个相当慢的问题。只是给你一个想法…

一个没有子查询的解决方案。这将在Mysql中起作用,但对于更严格的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);

没有子查询的解决方案。这将在Mysql中起作用,但对于更严格的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);

最好是:在mytable关键字上创建索引myindex,在mytable关键字上创建索引myindex2pages@vbence:myindex2实际上不是必需的,因为MySQL可能会选择为内部select运行嵌套循环。但我同意myindex@Lukas埃德尔:你可能是对的,但对于我订阅的索引,我的态度是“安全胜于遗憾”。@vbence:对于小型数据库来说可能是这样,但对于大型数据库来说,索引本身可能是性能瓶颈,这取决于对表运行的操作。我不知道MySQL,但对于Oracle,索引也可能是一场噩梦。在任何情况下,我想上面的表都会变得相当大,索引的选择应该明智,因为我预计数据波动会很大,需要大量的插入/更新。因此,一个索引太多可能会严重降低系统速度…此解决方案的工作原理与建议的一样缓慢;P只是想知道索引有什么问题,因为我有id作为索引,而且datatable不会使用大量插入/更新。最好是:在mytable关键字上创建索引myindex,在mytable上创建索引myindex2pages@vbence:myindex2实际上不是必需的,因为MySQL可能会选择为内部select运行嵌套循环。但我同意myindex@Lukas埃德尔:你可能是对的,但对于我订阅的索引,我的态度是“安全胜于遗憾”。@vbence:对于小型数据库来说可能是这样,但对于大型数据库来说,索引本身可能是性能瓶颈,这取决于对表运行的操作。我不知道MySQL,但对于Oracle,索引也可能是一场噩梦。在任何情况下,我想上面的表都会变得相当大,索引的选择应该明智,因为我预计数据波动会很大,需要大量的插入/更新。因此,一个索引太多可能会严重降低系统速度…此解决方案的工作原理与建议的一样缓慢;P我只是想知道索引有什么问题,因为我确实有id作为索引,而且datatable不需要使用大量的插入/更新。Shees,这个MySQL让我有SQL爬行的感觉!:-嗨,维本斯。我尝试了您的解决方案,该解决方案与我尝试的解决方案类似,但在b.*上出现了错误,这与我自己的代码遇到的问题相同。@Rephael请尝试此版本。如果它不起作用,那么你必须选择COUNTb.id作为另一个字段,然后have肯定会处理它。我会将你的查询标记为已回答,因为你是第一个回答的,你的查询看起来与我在发布此问题之前开始编写的查询相似。即使到期了,我想对于索引信息,lukas还有半个答案。Shees,这个MySQL给了我SQL爬行的感觉!:-嗨,维本斯。我尝试了您的解决方案,该解决方案与我尝试的解决方案类似,但在b.*上出现了错误,这与我自己的代码遇到的问题相同。@Rephael请尝试此版本。如果它不起作用,那么你必须选择COUNTb.id作为另一个字段,然后have肯定会处理它。我会将你的查询标记为已回答,因为你是第一个回答的,你的查询看起来与我在发布此问题之前开始编写的查询相似。即使到了适当的时候,我认为对于索引信息,卢卡斯仍保留了半个答案。