MaxCompute(ODPS)一对多连表时实现多行过滤(同样适用于MySQL)
需求
给定表A、B:
A
中存在非主键列X
;A
中有多行记录、X
值相同;- 1中
X
值可在B
中找到多行记录,但连表时A只需一条B记录; - 1中不同行、在
B
中选择可能不同记录(可能有多种条件),即多行过滤
+-----+-----+
| AID | X |
+-----+-----+
| a1 | x1 |
+-----+-----+
| a2 | x1 |
+-----+-----++-----+-----+
| BID | X |
+-----+-----+
| b1 | x1 |
+-----+-----+
| b2 | x1 |
+-----+-----+
| b3 | x2 |
+-----+-----+
期望连表查询结果:
+-----+-----+-----+
| AID | X | BID |
+-----+-----+-----+
| a1 | x1 | b1 |
+-----+-----+-----+
| a2 | x1 | b2 |
+-----+-----+-----+
解决思路
ODPS提供了UDF、WINDOW函数等:
- UDF只能解决单行数据问题、不能解决一对多问题
- 窗口函数只能解决单表问题。
- UDJ方案还未研究。
目前使用了SQL方案:
SELECT AID,if(tmp.k = 0, tmp.ks[0], tmp.k) as BIDFROM A aLEFT JOIN (select x, SUM(IF(任意扩展条件, BID, 0)) k, collect_set(BID) as ksfrom B b group by x) tmp on a.x = tmp.x;
MaxCompute(ODPS)一对多连表时实现多行过滤(同样适用于MySQL)相关推荐
- mysql创建表时表明加单引号_python在MySQL表名周围插入单引号(‘)
我有一个名为project1的数据库,其中包含以下表格: _systbl1 _systbl2 _systbl3 dataset1 dataset2 dataset3 每当添加一个新用户时,都需要授予M ...
- mysql设计表时 varchar长度_设计表的时候,对变长字段长度选择的一点思考
设计表时,不管是在MSSQL还是MySQL或者Oracle,变长字段的长度衡量都是要经常面对的. 对于一个变长的字段,在满足业务的情况下(其实所谓的满足业务是一个比较模糊的东西),到底是选择varch ...
- mysql表级锁和行级锁
表级锁和行级锁对比: 表级锁: Mysql中锁定 粒度最大 的一种锁,对当前操作的整张表加锁,实现简单,资源消耗也比较少,加锁快,不会出现死锁.其锁定粒度最大,触发锁冲突的概率最高,并发度最低,MyI ...
- MaxCompute - ODPS重装上阵 第一弹 - 善用MaxCompute编译器的错误和警告
摘要: MaxCompute (ODPS) ( 注1 )是阿里云自主研发的具有业界领先水平的分布式大数据处理平台, 尤其在集团内部得到广泛应用,支撑了多个BU的核心业务. ODPS2.0除了持续优化性 ...
- mysql字段掩码_在必须输入字母A~Z或数字0~9数据库中设计表时,如果将字段的输入掩码设置为“LLLL”,则该字段能够接受的输入是()_学小易找答案...
[单选题]关于Access2010的索引,下列叙述中错误的是() [单选题]痰饮淤血() [单选题]关于Access查询中的数据源,下列说法中正确的是 [单选题]对Access2010表中某一个字段建 ...
- MaxCompute(ODPS)上处理非结构化数据的Best Practice
2019独角兽企业重金招聘Python工程师标准>>> 摘要: 随着MaxCompute(ODPS)2.0的上线,新增的非结构化数据处理框架也推出一系列的介绍文章,包括 MaxCom ...
- mysql建表时外检怎么创建_MySQL创建表时加入的约束以及外键约束的的意义
1,创建表时加入的约束 a) 非空约束,not null b) 唯一约束,unique c) 主键约束,primary key d) 外键约束,foreign key 1,非空约束,针对某个字段设置其 ...
- mysql 一对多 join_Mysql中FIND_IN_SET与JOIN在一对多关系查询时的优劣
Mysql中的FIND_IN_SET函数在我知道它之前,我在做一个一对多的外键查询时,都会在中间设计一个关系表.比如一篇文章(post)对应多个标签(tag),我就会在中间设计一个关系表(post_t ...
- MaxCompute(ODPS)实现笛卡尔积
笛卡尔积会产生大量的重复记录,是引起主键重复的主要原因,但是对有些业务或者数据的处理笛卡尔积又是必不可少的技巧.如何在MaxCompute(ODPS)对表实现笛卡尔积,几种方案记录如下: 方法1:条件 ...
最新文章
- python Selenium 常见操作 元素定位
- Vue中使用vue-video-player和videojs-flash插件实现播放rtmp视频文件流
- 索尼a5100_【大象原创】索尼微单最全功能就在这里啦
- android 7.0 裁剪,Android 7.0中拍照和图片裁剪适配的问题详解
- mybatis判断集合为空或者元素个数为零
- CentOS 7 利用Docker搭建Showdoc文档管理系统
- 10-R语言文本挖掘tm包详解
- MFC UI库知多少
- android自定义view设置高度,自定义View的宽高设定
- 举例说明jquery插件的编写方法
- 科学精神:谈登月,关键在于讨论技术如何实现
- 计算机控制系统的框图,计算机控制系统原理框图.doc
- cad剖切线的快捷键_CAD有哪些常用的快捷键?
- MySQL的相关问题
- FBreader问题记录及多端同步心得开篇
- FFMPEG学习【libavfilter】(二)
- Python零基础学习笔记(三十三)—— 窗体的控制...
- python转cython_10分钟带你入门Cython
- 【转】《与MySQL的零距离接触》第四章:操作数据表中的记录 (4-2:MySQL 插入记录INSERT)
- OC高级foundation框架类以及数据的简单存储
热门文章
- 搭建邮件群发服务器费用,自建邮件群发服务器优缺点分析
- tp5子域名index.php,tp5实现绑定子域名,并且根据子域名定义路由规则
- 蓝绿部署、AB测试、灰度发布、⾦丝雀发布、滚 动发布的概念与区别
- 摩托车新手驾驶教程[1]
- python画笛卡尔心形线_伊对:学霸如何谈恋爱?揭秘不同专业的学霸表白方式
- 【关于理想】别让你的理想显得太掉价,每个人都很值钱
- sphinx-for-chinese在windows下安装与使用方法
- (八)Python数据分析与挖掘实战(实战篇)——中医证型关联规则挖掘
- 【HDU No. 1317】 游戏玩家
- 接口管理系统 eoLinker-AMS 开源版 V3.5.0 发布更新