有一次面试的时候,面试官问了这么一个场景题:一家门店一个月内每位顾客访问的目的可能有多种,并给到访顾客的目的打标签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 用法相关推荐

  1. sql语句中exists用法详解

    文章目录 一.语法说明 exists: not exists: 二.常用示例说明 1.查询a表在b表中存在数据 2.查询a表在b表中不存在数据 3.查询时间最新记录 4.exists替代distinc ...

  2. mysql中exists用法

    在MySQL中 EXISTS 和 IN 的用法有什么关系和区别呢? 假定数据库中有两个表 分别为 表 a 和表 b create table a ( a_id int, a_name varchar( ...

  3. MyBatis中exists用法

    MyBatis框架中的exists用法 exists用法 使用示例 总结 exists用法 exists: 如果括号内子查询语句返回结果不为空,说明where条件成立,就会执行主SQL语句 如果括号内 ...

  4. Java 中exists用法_sql中exists,not exists的用法

    exists : 强调的是是否返回结果集,不要求知道返回什么, 比如: select name from student where sex = 'm' and mark exists(select ...

  5. Java 中exists用法_SQL中EXISTS的用法

    比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHERE EXISTS( SELECT OrderID ...

  6. sql中exists用法

    exists关键字介绍 exists强调的是 是否返回结果集,不要求知道返回什么,比如: SELECT * FROM AM_USER WHERE EXISTS (SELECT 1 FROM AM_RO ...

  7. SQL 查询中exists用法

    EXISTS 的子查询 不返回具体的数据,只返回所查询数据的行数.所以一般EXISTS后面的查询通常都用 * 表示,给出具体的列名没有实际意义 若内层的查询结果为非空,则外层的 WHERE语句 子句返 ...

  8. oracle中exists和not exists用法(包含经典例题:查看学了所有课程的同学的信息的通俗易懂解释)

    1.基本概念: select * from A where not exists(select * from B where A.id = B.id); select * from A where e ...

  9. COLLATE oracle,Sql 中Collate用法

    今天查询sqlite的时候需要不区分大小写,查了下文档,需要使用collate nocase.顺便学习下collate的用法. collate在sql中是用来定义排序规则的.排序规则其实就是当比较两个 ...

最新文章

  1. 别光发Paper,搞点实际问题
  2. java-mybaits-00101-基础安装配制
  3. 手把手教你DIY最便宜的 arduino 温湿度计,详细图文视频教程
  4. DbVisualizer 8 解决中文乱码问题
  5. python饼状图教程_Python数据可视化:饼状图的实例讲解
  6. PHP中 htmlspecialchars,htmlentities, nl2br函数
  7. Linux编程(5)_静态库与动态库
  8. 那些年学习Linux,你被坑过的故障集合?
  9. 【cofface】酷派手机升级助手Coolpad Download Assistant图文教程
  10. 量子计算机与仿生论文,有关量子力学的论文
  11. HTML创建简单动态时钟
  12. 上海市新能源汽车分时租赁规划策略研究
  13. Linux出现“E45: ‘readonly‘ option is set (add ! to override)”的解决方法。
  14. 快速上手 Spring Boot 项目开发
  15. java词云生成,kumo项目详解
  16. 2016即将结束,你的目标实现了吗?
  17. 每天都在用WiFi,WiFi和无线网络什么关系?了解此篇足矣
  18. 618商战大片谢幕,销量冠军竟然有两个?
  19. 辽宁初级消防设施操作员考试真题及答案解析
  20. 大学计算机教案封面模板,大学教案模板可打印.doc

热门文章

  1. 第十天 跟着B站学python lol之购买武器
  2. 我的世界国际版仿java版材质包_我的世界国际版如何更换材质包和光影
  3. 【国产虚拟仪器】基于dsp+fpga+AD+ENDAC的半导体运动台高速数据采集电路仿真设计(四)
  4. Linux网络配置不生效
  5. 信息熵、交叉熵、KL散度公式的简单理解
  6. 微软拟推“超人”和“特斯拉”两款新手机
  7. Jmeter超高并发解决方案
  8. C# 手动实现UrlEncode(查看微软底层代码整理)
  9. 【java】jstack工具
  10. 明道云前后端分离这条路