如果我有一个具有以下结构和数据的表:
id | user_id | created_at
-------------------------
1 | 7 | 0091942
2 | 3 | 0000014
3 | 6 | 0000890
4 | 6 | 0029249
5 | 7 | 0000049
6 | 3 | 0005440
7 | 9 | 0010108
我将使用哪种查询来获得以下结果(随后的说明):
id | user_id | created_at
-------------------------
1 | 7 | 0091942
6 | 3 | 0005440
4 | 6 | 0029249
7 | 9 | 0010108
如你看到的:
user_id
仅返回一行。created_at
是返回的那一行。是否有一种 无需 使用子查询即可完成此操作的方法?该程序经过的关系代数术语中是否有名称?
该查询称为逐组最大值,它(至少在MySQL中)可以通过子查询实现。例如:
SELECT my_table.* FROM my_table NATURAL JOIN (
SELECT user_id, MAX(created_at) created_at
FROM my_table
GROUP BY user_id
) t
在sqlfiddle上看到它。
问题内容: 我有此数据: 代码(对于SQL Server 2005): 我想为每个名称获取具有最新DATE的ID。像这样: 实现此目的最优雅的方法是什么? 问题答案: 尽量避免使用保留字(和模糊的列名),例如…
问题内容: 我在Postgres 9.2中有以下用于用户消息(简化形式)的日志表: 每个用户每天最多包含一条记录。在300天之内,每天大约有50万条记录。每个用户的有效负载都在增加(如果很重要)。 我想有效地检索每个用户在特定日期之前的最新记录。我的查询是: 这非常慢。我也尝试过: 具有相同的计划,并且速度同样慢。 到目前为止,我在上只有一个索引,但并没有太大帮助。 我有一个包含所有用户的表。我还
问题内容: 可以说我有2个表:blog_posts和类别。每个博客帖子仅属于一个类别,因此此处的两个表之间基本上有一个外键。 我想从每个类别中检索2个最新的帖子,是否可以在单个请求中实现?GROUP BY会将所有内容分组,而在每个类别中只剩下一行。但我要其中两个。 执行1 + N查询(N =类别数)会很容易。首先检索类别。然后从每个类别检索2个帖子。 我相信执行M个查询(M =我希望从每个类别获得
问题内容: 有一个包含数据的表,如下所示: 如果我运行查询,我将得到的结果为: 什么查询将返回以下结果? 即,应返回每个组中的最后一条记录。 目前,这是我使用的查询: 但这看起来效率很低。还有其他方法可以达到相同的结果吗? 问题答案: MySQL 8.0现在支持窗口功能,就像几乎所有流行的SQL实现一样。使用这种标准语法,我们可以编写每组最多n个查询: 以下是我在2009年为此问题写的原始答案:
我正在尝试使用Altova XMLSpy和XQuery1.0为每个客户返回最近的订单。 在SQL中,查询如下所示: 它返回16行,但我无法获得类似于XQuery中的工作。 我尝试了多种不同的代码,我认为我得到的最接近的代码是: 对于XML从MS Access导出的糟糕的标记名表示歉意。 请救命!提前道谢。 编辑:在尝试JoeMFB的解决方案后,当我只需要最近的(或最大日期)时,我会收到每个客户的所
问题内容: 我在Oracle数据库中有下表 现在,我想检索每个ID的最新值(及其时间)。输出示例: 我只是不知道如何将其放入查询… 此外,以下选项将是不错的选择: 选项1:查询应仅返回最近XX分钟的值。 选项2:应将id与另一个具有id和idname的表中的文本连接起来。id的输出应类似于:id-idname(例如1-testid1)。 非常感谢您的帮助! 问题答案: 给定此数据… …以下查询给出