SELECT id, user_id, item_idFROM questionnaire_answer_old_0WHERE item_id IN ( SELECT item_id FROM questionnaire_answer_old_0 GROUP BY user_id, item_id HAVING COUNT(user_id) > 1 AND COUNT(item_id) > 1);
代码如上,子查询能正常执行。问题是整个执行时一直无反应,也不报错,一直显示正在查询,去掉子查询里的group by 就能正常执行,请问是什么原因?
这种情况可能是由于子查询中的 GROUP BY
语句导致了优化器无法有效地执行查询。
在子查询中,你按照 user_id
和 item_id
对表进行了分组,并且只选择了满足条件的组。然而,在主查询中,你并没有对结果进行分组,并且选择了所有的列。这可能导致优化器无法有效地执行查询,因为它需要为每个 item_id
和 user_id
的组合生成一个结果。
为了解决这个问题,你可以尝试对主查询中的结果进行分组。这样可以消除子查询中分组的影响,使查询更加高效。例如:
SELECT id, user_id, item_idFROM ( SELECT item_id, user_id, COUNT(*) AS count FROM questionnaire_answer_old_0 GROUP BY item_id, user_id HAVING COUNT(user_id) > 1 AND COUNT(item_id) > 1) AS subqueryJOIN questionnaire_answer_old_0 ON item_id = item_id AND user_id = user_id;
上述代码将首先对 questionnaire_answer_old_0
表进行分组,并计算每个 item_id
和 user_id
组合的出现次数。然后,它使用 JOIN
将子查询的结果与原始表连接起来,以获取所需的列。
请注意,上述查询只是一个示例,并且可能需要根据实际情况进行调整。另外,如果表中的数据量非常大,那么这种查询可能会对性能产生一定的影响。在这种情况下,可能需要考虑其他优化措施,例如建立适当的索引或对数据进行预处理。
我在组件的列表中显示了一个项目数组。项目的属性之一是描述字段,其范围可以从一个单词到几个句子。 当描述太长,我想截断它,并显示一个按钮,将显示点击时的完整文本。是否截断和显示按钮的条件基于返回布尔值的函数: 然后我从组件的模板端使用这个函数,如下所示(ngFor的一小部分): 这里使用的CSS很简单: 目前,该行为非常偶然,我在控制台中收到错误: expressionchangedafterith
问题内容: 嗨,我必须在具有大量ID的MySQL语句中使用IN条件。 例 IN语句可以包含的项是否有限制? 问题答案: 没有,请查看有关IN功能的手册: 列表中的值数仅受max_allowed_packet值限制。
我在下面的manager.popbackbackstack行中遇到此错误。有办法解决这个问题吗?事情发生得很顺利。 致命异常:java.lang.IllegalStateException:在android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:2044)在android.support.v4.
问题内容: 谁能告诉我两列中SQL中NOT IN条件的确切语法。 这是我用VBA编写的查询。 我想更改此子查询,它应应用于两列的组合,如下所示: 但这不起作用..... 问题答案: 您不能使用多于一列,但通常可以使用以下方法实现相同的效果:
问题内容: 我在玩耍以获得更好的itertools感觉,所以我按数字对元组列表进行了分组,并试图得到结果组的列表。但是,当我将结果转换为列表时,会得到一个奇怪的结果:除了最后一组以外的所有内容都是空的。这是为什么?我以为将迭代器转换为列表效率不高,但永远不会改变行为。我猜列表是空的,因为遍历了内部迭代器,但是何时/何地发生? 问题答案: 从 文档中 : 返回的组本身就是一个与共享底层可迭代对象的迭
问题内容: 我收到错误消息 “您的SQL语法有错误;请检查与您的MySQL服务器版本相对应的手册,以找到在第1行的“ orderr”附近使用的正确语法” -因此,我认为错误是用了两个 ‘, 但是在我的代码中我没有用 ‘ 。注意,该表实际上被命名为订购者。 问题答案: 在大多数数据库中,您无法参数化表名称之类的对象名称,在MySQL中,理论上您可以做到,因为默认情况下,MySQL Connector