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

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

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

我必须使用名为USERSCOMM_HISTORY的表

代码语言:javascript
运行
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
运行
AI代码解释
复制
1 John Doe 2012-01-29 Jane Doe

而不是

代码语言:javascript
运行
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
运行
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
运行
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

复制
相关文章
DistributtedShell的container在所有节点上仅执行一次
博客将主要介绍过程2的实现过程,主要思路是首先获取节点列表,再在申请container时,指定节点。具体过程如下:
jiewuyou
2022/09/29
4550
带有-i选项的sed命令在Linux上执行成功,但在MacOS上失败
就地编辑文件(如果提供了后缀,则进行备份),可见参数后缀 SUFFIX 是可选的,即带或者不带这个参数都可以执行。
程序熵
2023/09/25
3880
带有-i选项的sed命令在Linux上执行成功,但在MacOS上失败
在Windows上运行单节点的Cassandra
Cassandra可以安裝在很多系统上, 我是安装在windows server 2008 R2上,安装相当简单,只要把下载下来的压缩包解压缩放到一个目录下就可以了,这里主要是记录下使用体验: Cassandra官网: http://cassandra.apache.org/,下载页面 http://cassandra.apache.org/download/ Cassandra用java开发的,要求安装JVM 1.6以上,推荐 Version 6 Update 23  到Java官网下载 http://w
张善友
2018/01/19
2.4K0
在Windows上运行单节点的Cassandra
在 Docker 上建立多节点的 Hadoop 集群
在上篇文章中你已经看到了在你的devbox创建一个单点Hadoop 集群是多么简单。
星哥玩云
2022/07/01
1.1K0
BackgroundWorker在单独的线程上执行操作
直接使用多线程有时候会带来莫名其妙的错误,不定时的发生,有时候会让程序直接崩溃,其实BackgroundWorker 类允许您在单独的专用线程上运行操作。可以通过编程方式创建 BackgroundWorker,也可以将它从“工具箱”的“组件”选项卡中拖到窗体上。如果在 Windows 窗体设计器中创建 BackgroundWorker,则它会出现在组件栏中,而且它的属性会显示在“属性”窗口中。
张果
2022/05/09
1.2K0
BackgroundWorker在单独的线程上执行操作
js插入节点appendChild和insertBefore
首先 从定义来理解 这两个方法:  appendChild() 方法:可向节点的子节点列表的末尾添加新的子节点。语法:appendChild(newchild)  insertBefore() 方法:可在已有的子节点前插入一个新的子节点。语法 :insertBefore(newchild,refchild)  相同之处:插入子节点  不同之处:实现原理方法不同。       appendChild方法是在父级节点中的子节点的末尾添加新的节点(相对于父级节点 来说)。       insertBefore 方
蓓蕾心晴
2018/04/12
3K0
在元素上写事件和addEventListener()的区别[通俗易懂]
语法: element.addEventListener( type , listener , useCapture ) – – 添加事件监听 – – type: 事件类型字符串,不使用“on”前缀 – – callback:事件处理程序(回调函数) – – useCapture:可选参数,是否使用事件捕获的方式处理事件。不传递时,默认为false,表示不使用事件捕获(使用事件冒泡),如果需要显示事件捕获,则显示传递true。
全栈程序员站长
2022/09/18
1.2K0
怎样在windows上定时执行python
作为一个需要在电脑上工作和学习的人,一件十分困扰我的事情就是怎样不受互联网中其他内容的干扰而专注于自己想要做的事情,有的时候真的是沉浸于微博上的消息,忘了自己本来想要做的事。不过我有一件神器,自己爱豆的音频激励,所以决定写一个python脚本,让电脑每小时定时播放,提醒自己专注学习。
py3study
2020/01/19
1.6K0
git+jenkins在windows机器上新建一个slave节点
前言 我们在跑自动化项目的时候,希望有单独的测试机能跑自动化项目,并且能集成到jenkins上构建任务。如果公司已经有jenkins环境了,那无需重新搭建。 只需在现有的平台基础上,新增一个slave
上海-悠悠
2018/04/08
2.9K2
git+jenkins在windows机器上新建一个slave节点
Kafka在Zookeeper上的节点信息和查看方式
/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
子润先生
2021/07/06
3.6K0
HTML-JavaScript动态添加元素appendChild
开始自学一下前端的基础知识,这里记录一下知识点,毕竟不熟,不记录很容易就忘记了。前端最佳的学习资料就是在MDN,没有之一。
傅_hc
2020/02/18
1.9K0
HTML-JavaScript动态添加元素appendChild
TKE中在节点上获取容器资源配置
从本质上,容器其实就是一种沙盒技术。就好像把应用隔离在一个盒子内,使其运行。因为有了盒子边界的存在,应用于应用之间不会相互干扰。并且像集装箱一样,拿来就走,随处运行。其实这就是 PaaS 的理想状态。
聂伟星
2020/07/31
1K0
python smtplib在linux上发送邮件失败解决方式
之后放在linux上却 /usr/local/python3/lib/python3.7/socket.py
陈灬大灬海
2020/07/03
2K0
OpenProcess在某些XP系统上打开进程失败的原因
最近用AAU写游戏外挂代码,结果几个客户的电脑上打开游戏进程失败,通过远程协助在客户电脑上鼓捣了好久都没有找到原因。最后想到以前用AU3写的同样功能的软件没有遇到过这种问题,所以就去分析这2个语言打开外部进程时有什么区别。通过对比,发现这两种语言打开外部进程都是调用的kernel32.dll的OpenProcess函数,新说这就好办了,如果他们两个的机制不同,就无法下手。再仔细对比,发现AU3调用OpenProcess时,参数DesiredAccess参数使用的0x1F0FFF,而AAU的process库调
用户2135432
2018/06/04
2.1K0
在腾讯云容器服务Node上执行 kubectl
默认 容器服务 的 Node 上无法执行 kubectl ,需要配置集群访问凭证,如果你开启了内网访问 按照官方教程很好解决,这里介绍下在不开启内网访问的情况下,如何在 Node 上执行 kubectl。
SRE扫地僧
2022/07/03
1.3K0
在腾讯云容器服务Node上执行 kubectl
在Linux上如何查看Python3自带的帮助文档?
俩个步骤: 在Linux终端下输入: ortonwu@ubuntu:~$ pydoc -p 8000 pydoc server ready at http://localhost:8000/ 打开浏览
Tencent JCoder
2018/07/02
1.4K0
在navicat上设置定时计划执行存储过程
有一个存储过程,需要每天定时执行一次。所以在navicat上使用事件处理,当然还有其他的方法,这只是一种。作为参考
Java架构师历程
2019/03/08
2.2K0
在navicat上设置定时计划执行存储过程
腾讯文档品牌升级 (上)
未来已经在那儿了,只不过若隐若现而已。 ——威廉·吉布森 《重来2∶更为简单高效的工作方式》[美] 贾森·弗里德(Jason Fried)[丹]戴维·海涅迈尔·汉森(David Heine 著,李瑜偶秦昊译),中信出版社2018 为什么要做品牌升级? “效率一直是公共舆论中的一个重要话题:在古希腊人眼中,它是政治和社会运转的方式;工业革命早期,亚当·斯密将其视作提升生产力的强劲动力。”时至今日,它被奉为公共生活的首要目标,效率升级实质是广义世界里生产力的一次革新。 科技和物联网以看不见的方式正重塑这个
腾讯ISUX
2020/10/21
1.3K0
在RenderTransform上叠加一个ScaleAt
代码很简单,就是在缩放时,获取鼠标对元素的相对坐标,调用ScaleAt,然后添加到它现有的RenderTransform中
黄腾霄
2020/06/10
5480
如何实现文档检索(上)
MongoDB提供了一个名为db.collection.find()的函数,该函数用于从MongoDB数据库中检索文档。
MongoDB中文社区
2020/03/27
1.7K0

相似问题

具有SpringBoot CLI属性的jCommander

14

Groovy测试groovy.sql.Sql

11

无法加载类groovy.sql.Sql

10

Gradle CLI构建在JarWriter上从SpringBoot失败

32

无法在gcp cli中运行SpringBoot映像,而在本地Intellij中运行

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