hivesql中 exists 用法
有一次面试的时候,面试官问了这么一个场景题:一家门店一个月内每位顾客访问的目的可能有多种,并给到访顾客的目的打标签1、2、3、4这四类,现在要统计这家门店一个月内没有3、4标签的顾客明细。(也就是顾客到访标签只有1或者2,但凡被打过3或4标签的客户都要被排除掉)
很明显,这个场景用exists就很合适了。
先建一张表,插入几条数据,简单模拟一下这个场景
如上图,到访门店的一共四位顾客,不存在标签3、4的实际上只有顾客李四和赵六
SELECT * FROM DPM.y_cus_visit
WHERE
cus_code NOT IN (SELECT cus_code FROM DPM.y_cus_visit WHERE visit_goal IN (3,4))
这种写法是先把存在标签3、4的顾客找出来,然后在where条件做筛选排除掉。
运行结果如下:
那么用exsits 运行呢,出来的结果跟第一种写法是一样的
SELECT * FROM y_cus_visit a
WHERE NOT EXISTS (SELECT 1 FROM DPM.y_cus_visit b WHERE a.cus_code=b.cus_code
AND b.visit_goal IN (3,4));
not exists语句的执行顺序如下:
1.首先会执行外循环(SELECT * FROM y_cus_visit)
2.外循环返回的结果每一行都会拿着去内层循环执行
ps:SELECT * FROM y_cus_visit 查询的为 (001,001,001,002,002,003,003,004,004);此时内循环执行顺序应该是 001 003
外循环 not exsits 内循环
那么出来只剩下002和004的数据了
hivesql中 exists 用法相关推荐
- sql语句中exists用法详解
文章目录 一.语法说明 exists: not exists: 二.常用示例说明 1.查询a表在b表中存在数据 2.查询a表在b表中不存在数据 3.查询时间最新记录 4.exists替代distinc ...
- mysql中exists用法
在MySQL中 EXISTS 和 IN 的用法有什么关系和区别呢? 假定数据库中有两个表 分别为 表 a 和表 b create table a ( a_id int, a_name varchar( ...
- MyBatis中exists用法
MyBatis框架中的exists用法 exists用法 使用示例 总结 exists用法 exists: 如果括号内子查询语句返回结果不为空,说明where条件成立,就会执行主SQL语句 如果括号内 ...
- Java 中exists用法_sql中exists,not exists的用法
exists : 强调的是是否返回结果集,不要求知道返回什么, 比如: select name from student where sex = 'm' and mark exists(select ...
- Java 中exists用法_SQL中EXISTS的用法
比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHERE EXISTS( SELECT OrderID ...
- sql中exists用法
exists关键字介绍 exists强调的是 是否返回结果集,不要求知道返回什么,比如: SELECT * FROM AM_USER WHERE EXISTS (SELECT 1 FROM AM_RO ...
- SQL 查询中exists用法
EXISTS 的子查询 不返回具体的数据,只返回所查询数据的行数.所以一般EXISTS后面的查询通常都用 * 表示,给出具体的列名没有实际意义 若内层的查询结果为非空,则外层的 WHERE语句 子句返 ...
- oracle中exists和not exists用法(包含经典例题:查看学了所有课程的同学的信息的通俗易懂解释)
1.基本概念: select * from A where not exists(select * from B where A.id = B.id); select * from A where e ...
- COLLATE oracle,Sql 中Collate用法
今天查询sqlite的时候需要不区分大小写,查了下文档,需要使用collate nocase.顺便学习下collate的用法. collate在sql中是用来定义排序规则的.排序规则其实就是当比较两个 ...
最新文章
- 别光发Paper,搞点实际问题
- java-mybaits-00101-基础安装配制
- 手把手教你DIY最便宜的 arduino 温湿度计,详细图文视频教程
- DbVisualizer 8 解决中文乱码问题
- python饼状图教程_Python数据可视化:饼状图的实例讲解
- PHP中 htmlspecialchars,htmlentities, nl2br函数
- Linux编程(5)_静态库与动态库
- 那些年学习Linux,你被坑过的故障集合?
- 【cofface】酷派手机升级助手Coolpad Download Assistant图文教程
- 量子计算机与仿生论文,有关量子力学的论文
- HTML创建简单动态时钟
- 上海市新能源汽车分时租赁规划策略研究
- Linux出现“E45: ‘readonly‘ option is set (add ! to override)”的解决方法。
- 快速上手 Spring Boot 项目开发
- java词云生成,kumo项目详解
- 2016即将结束,你的目标实现了吗?
- 每天都在用WiFi,WiFi和无线网络什么关系?了解此篇足矣
- 618商战大片谢幕,销量冠军竟然有两个?
- 辽宁初级消防设施操作员考试真题及答案解析
- 大学计算机教案封面模板,大学教案模板可打印.doc
热门文章
- 第十天 跟着B站学python lol之购买武器
- 我的世界国际版仿java版材质包_我的世界国际版如何更换材质包和光影
- 【国产虚拟仪器】基于dsp+fpga+AD+ENDAC的半导体运动台高速数据采集电路仿真设计(四)
- Linux网络配置不生效
- 信息熵、交叉熵、KL散度公式的简单理解
- 微软拟推“超人”和“特斯拉”两款新手机
- Jmeter超高并发解决方案
- C# 手动实现UrlEncode(查看微软底层代码整理)
- 【java】jstack工具
- 明道云前后端分离这条路