需求

给定表A、B:

  1. A中存在非主键列XA中有多行记录、X值相同;
  2. 1中X值可在B中找到多行记录,但连表时A只需一条B记录;
  3. 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)相关推荐

  1. mysql创建表时表明加单引号_python在MySQL表名周围插入单引号(‘)

    我有一个名为project1的数据库,其中包含以下表格: _systbl1 _systbl2 _systbl3 dataset1 dataset2 dataset3 每当添加一个新用户时,都需要授予M ...

  2. mysql设计表时 varchar长度_设计表的时候,对变长字段长度选择的一点思考

    设计表时,不管是在MSSQL还是MySQL或者Oracle,变长字段的长度衡量都是要经常面对的. 对于一个变长的字段,在满足业务的情况下(其实所谓的满足业务是一个比较模糊的东西),到底是选择varch ...

  3. mysql表级锁和行级锁

    表级锁和行级锁对比: 表级锁: Mysql中锁定 粒度最大 的一种锁,对当前操作的整张表加锁,实现简单,资源消耗也比较少,加锁快,不会出现死锁.其锁定粒度最大,触发锁冲突的概率最高,并发度最低,MyI ...

  4. MaxCompute - ODPS重装上阵 第一弹 - 善用MaxCompute编译器的错误和警告

    摘要: MaxCompute (ODPS) ( 注1 )是阿里云自主研发的具有业界领先水平的分布式大数据处理平台, 尤其在集团内部得到广泛应用,支撑了多个BU的核心业务. ODPS2.0除了持续优化性 ...

  5. mysql字段掩码_在必须输入字母A~Z或数字0~9数据库中设计表时,如果将字段的输入掩码设置为“LLLL”,则该字段能够接受的输入是()_学小易找答案...

    [单选题]关于Access2010的索引,下列叙述中错误的是() [单选题]痰饮淤血() [单选题]关于Access查询中的数据源,下列说法中正确的是 [单选题]对Access2010表中某一个字段建 ...

  6. MaxCompute(ODPS)上处理非结构化数据的Best Practice

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 随着MaxCompute(ODPS)2.0的上线,新增的非结构化数据处理框架也推出一系列的介绍文章,包括 MaxCom ...

  7. mysql建表时外检怎么创建_MySQL创建表时加入的约束以及外键约束的的意义

    1,创建表时加入的约束 a) 非空约束,not null b) 唯一约束,unique c) 主键约束,primary key d) 外键约束,foreign key 1,非空约束,针对某个字段设置其 ...

  8. mysql 一对多 join_Mysql中FIND_IN_SET与JOIN在一对多关系查询时的优劣

    Mysql中的FIND_IN_SET函数在我知道它之前,我在做一个一对多的外键查询时,都会在中间设计一个关系表.比如一篇文章(post)对应多个标签(tag),我就会在中间设计一个关系表(post_t ...

  9. MaxCompute(ODPS)实现笛卡尔积

    笛卡尔积会产生大量的重复记录,是引起主键重复的主要原因,但是对有些业务或者数据的处理笛卡尔积又是必不可少的技巧.如何在MaxCompute(ODPS)对表实现笛卡尔积,几种方案记录如下: 方法1:条件 ...

最新文章

  1. python Selenium 常见操作 元素定位
  2. Vue中使用vue-video-player和videojs-flash插件实现播放rtmp视频文件流
  3. 索尼a5100_【大象原创】索尼微单最全功能就在这里啦
  4. android 7.0 裁剪,Android 7.0中拍照和图片裁剪适配的问题详解
  5. mybatis判断集合为空或者元素个数为零
  6. CentOS 7 利用Docker搭建Showdoc文档管理系统
  7. 10-R语言文本挖掘tm包详解
  8. MFC UI库知多少
  9. android自定义view设置高度,自定义View的宽高设定
  10. 举例说明jquery插件的编写方法
  11. 科学精神:谈登月,关键在于讨论技术如何实现
  12. 计算机控制系统的框图,计算机控制系统原理框图.doc
  13. cad剖切线的快捷键_CAD有哪些常用的快捷键?
  14. MySQL的相关问题
  15. FBreader问题记录及多端同步心得开篇
  16. FFMPEG学习【libavfilter】(二)
  17. Python零基础学习笔记(三十三)—— 窗体的控制...
  18. python转cython_10分钟带你入门Cython
  19. 【转】《与MySQL的零距离接触》第四章:操作数据表中的记录 (4-2:MySQL 插入记录INSERT)
  20. OC高级foundation框架类以及数据的简单存储

热门文章

  1. 搭建邮件群发服务器费用,自建邮件群发服务器优缺点分析
  2. tp5子域名index.php,tp5实现绑定子域名,并且根据子域名定义路由规则
  3. 蓝绿部署、AB测试、灰度发布、⾦丝雀发布、滚 动发布的概念与区别
  4. 摩托车新手驾驶教程[1]
  5. python画笛卡尔心形线_伊对:学霸如何谈恋爱?揭秘不同专业的学霸表白方式
  6. 【关于理想】别让你的理想显得太掉价,每个人都很值钱
  7. sphinx-for-chinese在windows下安装与使用方法
  8. (八)Python数据分析与挖掘实战(实战篇)——中医证型关联规则挖掘
  9. 【HDU No. 1317】 游戏玩家
  10. 接口管理系统 eoLinker-AMS 开源版 V3.5.0 发布更新