当前位置: 首页 > 知识库问答 >
问题:

这个mySQL查询是如何工作的?

魏泰
2023-03-14

我试图了解mysql查询在GROUP BY和不使用GROUP BY的情况下是如何工作的。

假设我有一个FILM_ACTORS表,其中每个ACTOR_ID都有一个相应的film_id。于是同一个演员参演了N部不同的电影。

我想选出参与20部电影的演员:

SELECT actor_id FROM film_actor GROUP BY actor_id HAVING COUNT(film_id) = 20;

这个查询起作用,并返回参与20部电影的actor_id。但如果我只是:

SELECT actor_id FROM film_actor HAVING COUNT(film_id) = 20;

为什么该查询仅在我将其等于film_actor表(5463)的大小时才返回值:

SELECT actor_id FROM film_actor HAVING COUNT(film_id) = 5463;

在本例中,它返回me actor_id=1。为什么?是在选择film_ids时没有考虑相应的actor_ids吗?

共有1个答案

孔磊
2023-03-14

GROUP BY按下列列的值对结果进行分组,通常与聚合函数一起使用(例如,COUNT)。

因此,您的第一个查询为actor_id的每个值返回一行,并且HAVING将结果限制为计数为20的结果

如果不使用GROUP BY子句,则聚合函数将作用于所有行。因此,您的第二个查询选择actor_id,其中films的计数是20,但没有分组,计数是5463(即表上的行数)。在这种情况下返回的actor_id不确定(即,可能是其中的任何一个)。

 类似资料:
  • 我在Wordpress网站上建立了一个搜索功能,用于搜索姓名和地点,如下所示: 这大约需要3秒的运行时间。我正在尝试看看是否有更快的方法可以编写这个查询。我有innoDB和索引,但有很多记录。这是查询的最快版本,但3秒仍然是相当慢的。有什么想法吗? 编辑(SQL explain结果,倒数第二个值是行数): “6”,“dependent subquery”,“wp_posts”,“index_sub

  • 这是来自SQLZOO.NET的问题

  • 问题内容: 是否有可能优化我编写的查询 我创建了一种动态虚拟数据库,以使用户能够添加自定义字段而不影响数据库结构。到目前为止,这是该结构的非常简化的视图。 我们可以通过在db_structure中添加一行来创建一个新字段 我们希望记录的任何数据都记录到db_data中。 名称存储在db_names中,而name_id存储在db_data中 我正在尝试将案例输出到html表 希望其余的内容可以自我解

  • Kotlin定义了自己的类: 该类的实例是通过中定义的内联函数构造的: null 我认为在编译之前必须进行某种代码预处理。 请随意用一个更贴切的标题编辑这个问题。

  • 我使用MySQL工作台CE为Windows版本5.2.40。 我想一起执行以下SQL查询。但是,我只能通过首先执行查询,然后执行查询,然后执行查询来执行SQL查询。 那么,我如何通过单击来执行< code >创建表 、< code >插入和< code >选择查询呢?

  • 问题内容: 我有两个查询,如下所示: 我想一次执行两个查询。 但是,然后告诉我如何处理每个单独设置的表。实际上,在ASP.NET中,我们使用数据集来处理两个查询, 如何使用PHP / MYSQL做同样的事情? 问题答案: 更新: 显然可以通过将标志传递给。请参阅使用PHP在一条语句中执行多个SQL查询。尽管如此,任何当前的读者都应避免使用-class函数,而更喜欢PDO。 您无法使用PHP中的常规