问题标签 [groupwise-maximum]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
440 浏览

subquery - CakePHP 2.1 中的 Facebook 点赞对话列表(与分组最大值、子查询、加入相关)

我有以下 MySQL 表:

注意:在会话表中 user1_id 小于或等于 user2_id。

我想获取用户 X 的对话列表,其中每个对话都由该对话中用户 X 未删除的最后一条消息显示,并对结果进行分页。(就像facebook消息一样。无论最后一条消息是由X还是其他用户发送的,它都显示为显示消息。

我想出了分组最大的解决方案,它帮助我创建了以下子查询:

我们可以将此子查询用作 $this->Paginator->settings 数组中的连接表吗?如果答案是肯定的,它应该生成如下查询:

这个最终查询返回想要的结果。但是我想不出在 PaginatorComponent 中设置正确选项的方法。对于这种查询,官方文档是不够的。那么,在这种情况下,我们该如何配置查找条件、连接、子查询等呢?

0 投票
2 回答
15447 浏览

mysql - MySQL 无重复加入

我有一个客户表和一个订单表。每个客户可以有许多订单。

我想从订单表中选择每个客户以及他们最早的订单号(重要的是我选择最早的订单号,而不仅仅是任何订单)。我想列出是否有订单的客户,如果他们有多个订单,我不想将客户包括两次。

我正在使用这个:

几乎给了我我想要的东西,除了它会从表中选择它喜欢的任何订单 ID。我需要能够排序,并选择最小的订单 ID。

请问有什么想法吗?

我很确定它在盯着我的脸...

编辑:根据要求的表格结构

  • 顾客:


    /li>
  • 订单:


    /li>
0 投票
1 回答
153 浏览

mysql - MySQL groupwise max 按字段的长度

Product桌子:

我需要获取按名称分组的所有产品的列表,如果某些产品具有相同的名称,info则应选择字段中数据最多的产品来显示。另一个要求是一致性——应该保证每次都展示相同的产品。但是性能根本不是我关心的。

所以到目前为止我想出的最好的是:

我的理解是这应该在 MySQL 中工作,但不能保证结果。

有没有更好的办法?

更新:

我正在寻找的一个例子。如果数据是

预期结果应该是:

或者

我不在乎两者中的哪一个,只要每次运行查询时结果相同即可。

0 投票
1 回答
596 浏览

mysql - 一百万行表上的 MySQL groupwise 最大性能问题

我试图找到一种直接的方法来提高非常活跃的论坛的性能,其中有大量帖子,mysql 不能再在内存中进行表排序,并且似乎没有充分利用索引。

这个简单的查询查找每个主题中的最新帖子,以便用户确定他们是否有任何回复(通过稍后比较 topic_time)

简单,扁平的桌子看起来像

然而,当有一百万个帖子并且用户自己有数万个帖子时,它的性能就会崩溃。MySQL 要么不再对内存中的表进行排序,要么扫描的行太多。在实际使用中可能需要长达 3 秒的时间,恕我直言,这是不可接受的,因为在此期间它会占用 CPU 并减慢其他所有人的速度。

我当然可以进行任何索引组合,但 mysql 似乎最喜欢使用组合

所以它只是从百万中选择一个用户的 50k 帖子,然后开始按 topic_id 分组和排序。奇怪地将 topic_id 添加到索引组合中似乎对性能没有帮助,尽管它可能是索引字段的顺序?

我尝试编写一个等效的 JOIN,以便可以使用多个索引,但我遇到了问题,即每一侧都必须由 post_status 和海报过滤。

我在想它会更快,至少对于前几页,如果可以让mysql首先通过它的索引按post_time对数据进行排序,然后开始按降序为用户挑选不同的topic_id。我想这将需要一个子查询,并且不确定 50k 结果子查询会更好,仍然需要一个临时表。

当然,一个基本的解决方案是增加核心设计,以便有另一个表只存储每个主题中每个用户的最大 post_time ,但除非找不到其他解决方案,否则这是一个太大的变化。

感谢您的任何建议!


添加真实世界的示例并解释:

慢日志

解释

0 投票
3 回答
971 浏览

ruby-on-rails-3 - 为每个子集选择具有最高值的记录

我有一组记录,其中一些(但不是全部)具有“路径”字段,并且都具有“值”字段。我希望只选择那些没有路径,或者在具有特定路径的所有记录中具有最大值的那些。

也就是说,鉴于这些记录:

我想返回 B、C、D 和 E,但不返回 A(因为 A 有一条路径,它的路径与 B 相同,但 A 的值较低)。

我如何使用 ActiveRecord、ARel 和 Postgres 来实现这一点?理想情况下,我想要一个充当范围的解决方案。

0 投票
2 回答
10443 浏览

mysql - MYSQL内联视图查询(顶级客户)

我尝试进行查询,以便查看谁是一个月内的最大客户(从开始到现在的每个月)。

现在我有桌子:

订单( orderID, orderdate, customerID, Netamount, tax, totalamount)

排序线( orderlineID, orderID, prodID, quantity, orderdate)

客户firstname lastname zip creditcardtype等)

我认为其他表不一定在这里。

当然,也有从没买过东西的顾客,也有买过很多次的顾客。

现在我使用了这个查询:

现在我看到所有已经购买的客户。他们支付的总金额。

随着查询

我得到一个表格,其中每一行都显示了Year Month Total order(放在那个月)。

我还是想看看一个月的顶级客户

我在互联网上搜索了很多仍然找不到我想要的东西(也许我只是用谷歌搜索错了)。我知道我至少需要一个内联视图,但仍然不知道如何实现它。

希望有人可以在这里帮助我。

0 投票
8 回答
269376 浏览

mysql - LEFT JOIN 仅第一行

我读了很多关于只获取左连接的第一行的帖子,但是,由于某种原因,这对我不起作用。

这是我的结构(当然是简化的)

饲料

艺术家

feeds_artists

现在我想获取文章并只加入第一个艺术家,我想到了这样的事情:

只是为了获得 feeds_artists 的第一行,但这已经不起作用了。

TOP由于我的数据库,我无法使用,我无法对结果进行分组,feeds_artists.artist_id因为我需要按日期对它们进行排序(我通过这种方式对它们进行分组得到了结果,但结果不是最新的)

也尝试了 OUTER APPLY - 也没有成功。老实说,我真的无法想象这些行中发生了什么——这可能是我无法让它工作的最大原因。

解决方案:

0 投票
2 回答
220 浏览

mysql - 我可以在 SQL 查询中安全地使用两个 MAX 调用吗

我有一个包含几十万个条目的表,我正在尝试使用查询来获取特定接收者 ID 的结果集,并按发送者 ID 对它们进行分组。我当前的 SQL 查询有效,但我想知道在语句中使用两个 MAX 调用是否存在任何潜在问题。它看起来像这样:

表日期如下所示:

我的查询的输出是这样的:

使用 MAX 调用此查询是否有任何问题?如果是这样,还有什么选择?

0 投票
0 回答
54 浏览

mysql - 如何获取最新行mysql的列

下面的查询对我来说很好,除了message_content列中的内容是表al_messages的第一行。如何获取最新行的内容?

查询结果:

在此处输入图像描述

0 投票
1 回答
109 浏览

mysql - 获取 10 个最新帖子

我准备了一个sql查询来获取一个简单论坛的最新主题,我有以下规定:

我如何进行查询以检索最新的帖子,但考虑到最后的评论?

这给了我最新的评论

有了最后一个帖子,

我必须加入这两个查询,然后按 10 个最近的 id_post(日期)对它们进行分组......

有人帮我一把吗?谢谢,问候