问题标签 [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.
subquery - CakePHP 2.1 中的 Facebook 点赞对话列表(与分组最大值、子查询、加入相关)
我有以下 MySQL 表:
注意:在会话表中 user1_id 小于或等于 user2_id。
我想获取用户 X 的对话列表,其中每个对话都由该对话中用户 X 未删除的最后一条消息显示,并对结果进行分页。(就像facebook消息一样。无论最后一条消息是由X还是其他用户发送的,它都显示为显示消息。
我想出了分组最大的解决方案,它帮助我创建了以下子查询:
我们可以将此子查询用作 $this->Paginator->settings 数组中的连接表吗?如果答案是肯定的,它应该生成如下查询:
这个最终查询返回想要的结果。但是我想不出在 PaginatorComponent 中设置正确选项的方法。对于这种查询,官方文档是不够的。那么,在这种情况下,我们该如何配置查找条件、连接、子查询等呢?
mysql - MySQL 无重复加入
我有一个客户表和一个订单表。每个客户可以有许多订单。
我想从订单表中选择每个客户以及他们最早的订单号(重要的是我选择最早的订单号,而不仅仅是任何订单)。我想列出是否有订单的客户,如果他们有多个订单,我不想将客户包括两次。
我正在使用这个:
这几乎给了我我想要的东西,除了它会从表中选择它喜欢的任何订单 ID。我需要能够排序,并选择最小的订单 ID。
请问有什么想法吗?
我很确定它在盯着我的脸...
编辑:根据要求的表格结构
顾客:
/li>订单:
/li>
mysql - MySQL groupwise max 按字段的长度
Product
桌子:
我需要获取按名称分组的所有产品的列表,如果某些产品具有相同的名称,info
则应选择字段中数据最多的产品来显示。另一个要求是一致性——应该保证每次都展示相同的产品。但是性能根本不是我关心的。
所以到目前为止我想出的最好的是:
我的理解是这应该在 MySQL 中工作,但不能保证结果。
有没有更好的办法?
更新:
我正在寻找的一个例子。如果数据是
预期结果应该是:
或者
我不在乎两者中的哪一个,只要每次运行查询时结果相同即可。
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 ,但除非找不到其他解决方案,否则这是一个太大的变化。
感谢您的任何建议!
添加真实世界的示例并解释:
慢日志
解释
ruby-on-rails-3 - 为每个子集选择具有最高值的记录
我有一组记录,其中一些(但不是全部)具有“路径”字段,并且都具有“值”字段。我希望只选择那些没有路径,或者在具有特定路径的所有记录中具有最大值的那些。
也就是说,鉴于这些记录:
我想返回 B、C、D 和 E,但不返回 A(因为 A 有一条路径,它的路径与 B 相同,但 A 的值较低)。
我如何使用 ActiveRecord、ARel 和 Postgres 来实现这一点?理想情况下,我想要一个充当范围的解决方案。
mysql - MYSQL内联视图查询(顶级客户)
我尝试进行查询,以便查看谁是一个月内的最大客户(从开始到现在的每个月)。
现在我有桌子:
订单( orderID
, orderdate
, customerID
, Netamount
, tax
, totalamount
)
排序线( orderlineID
, orderID
, prodID
, quantity
, orderdate
)
客户(firstname
lastname
zip
creditcardtype
等)
我认为其他表不一定在这里。
当然,也有从没买过东西的顾客,也有买过很多次的顾客。
现在我使用了这个查询:
现在我看到所有已经购买的客户。他们支付的总金额。
随着查询
我得到一个表格,其中每一行都显示了Yea
r Month
Total order
(放在那个月)。
我还是想看看一个月的顶级客户。
我在互联网上搜索了很多仍然找不到我想要的东西(也许我只是用谷歌搜索错了)。我知道我至少需要一个内联视图,但仍然不知道如何实现它。
希望有人可以在这里帮助我。
mysql - LEFT JOIN 仅第一行
我读了很多关于只获取左连接的第一行的帖子,但是,由于某种原因,这对我不起作用。
这是我的结构(当然是简化的)
饲料
艺术家
feeds_artists
现在我想获取文章并只加入第一个艺术家,我想到了这样的事情:
只是为了获得 feeds_artists 的第一行,但这已经不起作用了。
TOP
由于我的数据库,我无法使用,我无法对结果进行分组,feeds_artists.artist_id
因为我需要按日期对它们进行排序(我通过这种方式对它们进行分组得到了结果,但结果不是最新的)
也尝试了 OUTER APPLY - 也没有成功。老实说,我真的无法想象这些行中发生了什么——这可能是我无法让它工作的最大原因。
解决方案:
mysql - 我可以在 SQL 查询中安全地使用两个 MAX 调用吗
我有一个包含几十万个条目的表,我正在尝试使用查询来获取特定接收者 ID 的结果集,并按发送者 ID 对它们进行分组。我当前的 SQL 查询有效,但我想知道在语句中使用两个 MAX 调用是否存在任何潜在问题。它看起来像这样:
表日期如下所示:
我的查询的输出是这样的:
使用 MAX 调用此查询是否有任何问题?如果是这样,还有什么选择?
mysql - 如何获取最新行mysql的列
下面的查询对我来说很好,除了message_content列中的内容是表al_messages的第一行。如何获取最新行的内容?
查询结果:
mysql - 获取 10 个最新帖子
我准备了一个sql查询来获取一个简单论坛的最新主题,我有以下规定:
我如何进行查询以检索最新的帖子,但考虑到最后的评论?
这给了我最新的评论
有了最后一个帖子,
我必须加入这两个查询,然后按 10 个最近的 id_post(日期)对它们进行分组......
有人帮我一把吗?谢谢,问候