首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >选择SQL Join中第二个表的顶行

选择SQL Join中第二个表的顶行
EN

Stack Overflow用户
提问于 2012-01-30 08:52:41
回答 2查看 526关注 0票数 1

我必须使用名为USERSCOMM_HISTORY的表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
USERS(user_id, name)
COMM_HISTORY(comm_history_id, comm_date, comm_by, user_id)

USERS表将具有唯一的用户列表,而COMM_HISTORY可以具有重复的user_id。当我加入他们的时候,我想从COMM_HISTORY获取用户名和最新的comm_date

与这篇文章类似的sql join - only select top row from 2nd table,但似乎那篇文章没有正确的答案。

当我加入他们时,我希望得到ff结果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 John Doe 2012-01-29 Jane Doe

而不是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 John Doe 2011-10-20 Jane Lee
2 John Doe 2012-01-29 Jane Doe
3 John Doe 2011-09-08 Jane Doe

有人有解决这个问题的办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-30 09:05:26

@Andomar在另一个问题中的解决方案应该是有效的。适用于您的用例,它将是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT USERS.*, COMM_HISTORY.*
FROM USERS
INNER JOIN COMM_HISTORY
  ON USERS.user_id = COMM_HISTORY.user_id 
LEFT JOIN COMM_HISTORY LATER_HISTORY
  ON COMM_HISTORY.user_id = LATER_HISTORY.user_id 
  AND LATER_HISTORY.comm_date > COMM_HISTORY.comm_date
WHERE LATER_HISTORY.user_id IS NULL

将历史表重新连接到自身上,并设置一个条件,说明不应选择以后的历史记录行。

票数 0
EN

Stack Overflow用户

发布于 2012-01-30 09:39:50

一种使用cte的方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
with recent_comms as (
select 
   row_number() over (partition by user_id, order by comm_date decs) as rn,
   comm_date,
   comm_by, 
   user_id 
FROM comm_history)

select 
   users.name, 
   recent_comms.comm_date, 
   recent_comms.comm_by
from users
join recent_comms on users.user_id = recent_comms.user_id
and recent_comms.rn = 1

例如,将rn =1更改为rn <= 5将得到每个用户的最后5个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9061344

复制
相关文章
SQL Join 中,表位置对性能的影响
其实还真不是。两表的 Join, Internals(内幕)还是有很多可以讨论。比如 join 算法,Predicate 优化,Join 顺序对性能的影响,或者 DOP(degree of parallel).
用户1564362
2020/07/15
1.5K0
SQL Join 中,表位置对性能的影响
SQL Join 中,表位置对性能的影响
其实还真不是。两表的 Join, Internals(内幕)还是有很多可以讨论。比如 join 算法,Predicate 优化,Join 顺序对性能的影响,或者 DOP(degree of parallel).
Lenis
2020/07/14
1.8K0
Spark SQL如何选择join策略
众所周知,Catalyst Optimizer是Spark SQL的核心,它主要负责将SQL语句转换成最终的物理执行计划,在一定程度上决定了SQL执行的性能。
大数据学习与分享
2020/08/10
1.2K0
Spark SQL是如何选择join策略的?
我们都知道,Spark SQL上主要有三种实现join的策略,分别是Broadcast hash join、Shuffle hash join、Sort merge join。那Catalyst是依据什么样的规则来选择join策略的?本文来简单补个漏。
王知无-import_bigdata
2020/05/07
2.8K0
sql中left join、right join、inner join区别
aID aNum 1     a0111 2     a0112 3     a0113 4     a0114 5     a0115
csxiaoyao
2019/02/18
1.8K0
Flink SQL中的Join操作
Flink SQL 支持对动态表进行复杂灵活的连接操作。 有几种不同类型的连接来解决可能需要的各种语义查询。
从大数据到人工智能
2022/02/24
5.3K0
SQL联表细节,MySQL JOIN 的执行过程
  对于 MySQL 的 JOIN,不知道大家有没有去想过他的执行流程,亦或有没有怀疑过自己的理解(自信满满的自我认为!);如果大家不知道怎么检验,可以试着回答如下的问题
三哥
2019/12/17
5.5K0
SQL联表细节,MySQL JOIN 的执行过程
SQL中 LEFT JOIN 左表合并去重实用技巧
MySQL left join 语句格式为:A LEFT JOIN B ON 条件表达式
Spark学习技巧
2022/01/13
1.7K0
SQL中 LEFT JOIN 左表合并去重实用技巧
SQL中关于Join、Inner Join、Left Join、Right Join、Full Join、On、 Where区别
  今天主要的内容是要讲解SQL中关于Join、Inner Join、Left Join、Right Join、Full Join、On、 Where区别和用法,不用我说其实前面的这些基本SQL语法各位攻城狮基本上都用过。但是往往我们可能用的比较多的也就是左右连接和内连接了,而且对于许多初学者而言不知道什么时候该用哪种语法进行查询,并且对于左右,或者内连接查询的时候关于ON 和Where 的作用也是模糊不清的,说不出其中的一个大概的差别,因此接下来请容我把它们好好描述一遍。
追逐时光者
2019/08/28
9.4K1
SQL中关于Join、Inner Join、Left Join、Right Join、Full Join、On、 Where区别
SQL中 LEFT JOIN 左表合并去重实用技巧
前两天刚遇到这个问题,当时是用group by去重的。昨天遇到了大佬发的去重技巧,特此记录一下。
cultureSun
2023/05/18
1.1K0
SQL中 LEFT JOIN 左表合并去重实用技巧
Flink SQL 优化实战 - 维表 JOIN 优化
作者:龙逸尘,腾讯 CSIG 高级工程师 背景介绍 维表(Dimension Table)是来自数仓建模的概念。在数仓模型中,事实表(Fact Table)是指存储有事实记录的表,如系统日志、销售记录等,而维表是与事实表相对应的一种表,它保存了事实表中指定属性的相关详细信息,可以跟事实表做关联;相当于将事实表上经常重复出现的属性抽取、规范出来用一张表进行管理。 在实际生产中,我们经常会有这样的需求,以原始数据流作为基础,关联大量的外部表来补充一些属性。例如,在订单数据中希望能获取订单收货人所在市区的名称。一
腾讯云大数据
2022/05/30
3.9K0
Flink SQL 优化实战 - 维表 JOIN 优化
sql 中 join 的复杂示例解读
inner join(等值连接) 只返回两个表中联结字段相等的行 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 on 指定表间联结字段及其关系的等号 "=" 表达式, 返回 true 或 false. 当表达式返回 true 时, 则查询中包含该记录. update (ctarticle as a left join ctclass as c on a.classid =
java达人
2018/01/31
1.5K0
图解 SQL 中 JOIN 的各种用法
JOIN对于接触过数据库的人,这个词都不陌生,而且很多人很清楚各种JOIN,还有很多人对这个理解也不是很透彻,这次就说说JOIN操作。
好好学java
2019/07/10
9220
图解 SQL 中 JOIN 的各种用法
JOIN对于接触过数据库的人,这个词都不陌生,而且很多人很清楚各种JOIN,还有很多人对这个理解也不是很透彻,这次就说说JOIN操作。
用户5224393
2019/06/05
7210
图解 SQL 中 JOIN 的各种用法
Flink 实时计算 - SQL 维表 Join 的实现
Flink 1.9 版本可以说是一个具有里程碑意义的版本,其内部合入了很多 Blink Table/SQL 方面的功能,同时也开始增强 Flink 在批处理方面的能力,真的是向批流统一的终极方向开始前进。本文主要介绍学习 Flink SQL 维表 Join,维表 Join 对于SQL 任务来说,一般是一个很正常的功能,本文给出代码层面的实现,和大家分享用户如何自定义 Flink 维表。
LakeShen
2022/06/23
1.4K0
Flink 实时计算 - SQL 维表 Join 的实现
SQL JOIN
在机房收费系统个人重构的时候,很多的功能都需要根据数据库中的一个表中的信息,去查询另一个表中相匹配的信息,我们用到了视图,但是你有没有注意到下面的SQL语句呢?(SELECT...FROM...JOIN...ON...),接下来我们就一起来了解SQL中的JOIN.
令仔很忙
2018/09/14
7920
SQL JOIN
SQL LEFT JOIN 关键字: LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。 LEFT...
SELECT a.id as lang_id, a.name as name, b.cnt as cnt FROM programming_lang a LEFT JOIN cnt b on a.id=b.lang_id;
一个会写诗的程序员
2019/03/20
3.6K0
SQL LEFT JOIN 关键字:    LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。  LEFT...
MySQL中left join的几个SQL对比
对于很多同学来说,写SQL时的表关联看起来是一件很简单的事情,知道逻辑,有预期的结果,好像没什么特别要注意的,今天在写一条SQL逻辑的时候,觉得对于left join的部分还是存在一些误解。
jeanron100
2020/04/01
9250
leetcode-for-sql-组合两张表join
最近要准备开始刷LeetCode上关于SQL部分的练习题了。相信很多人是知道LeetCode的,毕竟太多互联网公司是从上面抽题目来考察面试者,尤其是算法相关的题目,它就像是一个庞大的题库。而作为打工人的我们,能做的就是多加练习,提升的能力
皮大大
2023/08/23
2090
sql之left join、right join、inner join的区别
Please refer the link : https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins
Hongten
2018/09/13
1.7K0
sql之left join、right join、inner join的区别

相似问题

sql join -仅从第二个表中选择顶行

40

如何从spark sql join中选择顶行

231

SQL排序--选择顶行中的顶行

15

如何从group by with join中选择顶行

20

SQL选择顶n%行

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文