当前位置: 首页 > article >正文

【sql】初识 where EXISTS

文章目录

  • 概述
  • 1. select 简单示例
  • 2. update和DELETE
  • 参考

相关文章:
【sql】深入理解 mysql的EXISTS 语法
【sql】初识 where EXISTS

概述

where EXISTS (子查询)多对多中通过中间表查对方列表

1. select 简单示例

用户表A,小组表B,小组和用户是多对多关系,中间有个中间表M

已知 小组 id 即teamId ,想知道这个小组中的用户列表信息,可以如下写sql:

select * from A a where EXISTS (select m.id from M m where a.id = m.aid and m.bid = (参数teamId));

where 后面 跟 exists (子查询)的意思是,括号里面子查询至少有一条记录时,前面的大的select查询语句才返回结果

此查询语句中涉及了三张表:表A ,表B, AB多对多关系表M

【记忆方法:因为要查用户列表,所以外层的大select 查询的from是用户表,然后后面子查询中才是A和B与中间表中的关系条件】

2. update和DELETE

UPDATE TEST_TB01 aa
   SET (aa.part_id, aa.flag) =
       (SELECT bb.part_id, bb.flag
          FROM TEST_TB02 bb
         WHERE aa.sensor_id = bb.sensor_id)
 WHERE EXISTS
 (SELECT 1 FROM TEST_TB02 cc 
       WHERE aa.sensor_id = cc.sensor_id);

SELECT
  aa.sensor_id,aa.part_id,aa.flag
FROM
  TEST_TB01 aa
WHERE EXISTS
  (SELECT 1 FROM
    TEST_TB02 bb
  WHERE aa.sensor_id = bb.sensor_id);

SELECT
  aa.sensor_id,aa.part_id,aa.flag
FROM
  TEST_TB01 aa
WHERE NOT EXISTS
  (SELECT 1 FROM
    TEST_TB02 bb
  WHERE aa.sensor_id = bb.sensor_id);

  DELETE  FROM
TEST_TB01 aa
WHERE EXISTS
  (SELECT 1 FROM
    TEST_TB02 bb
  WHERE aa.sensor_id = bb.sensor_id);

参考

https://www.cnblogs.com/libin6505/p/8890897.html


http://www.kler.cn/a/273685.html

相关文章:

  • 解决idea中无法拖动tab标签页的问题
  • OpenBSD之安装指南
  • uniapp 微信小程序内嵌h5实时通信
  • 备忘录记事工具 四款好用的电脑备忘录记事本分享
  • [0405].第05节:搭建Redis主从架构
  • Nginx入门笔记
  • MySQL---索引
  • 第十四届蓝桥杯省赛C++B组题解
  • 【Unity动画】Unity如何导入序列帧动画(GIF)
  • 护眼灯和白炽灯哪个更保护眼睛?四款必选的高口碑护眼台灯
  • 第二十二章 构建和配置 Nginx (UNIX® Linux macOS) - 示例:为特定路径上的所有流量启用 CSP 路由
  • idea2023 运行多 springboot 实例
  • 计算机网络:TCP篇
  • 外贸网站常用的wordpress模板
  • 学习笔记Day8:GEO数据挖掘-基因表达芯片
  • 用JDBC游标的方式导出mysql数据以及springboot打包成exe程序实践
  • 每天一个数据分析题(二百一十六)
  • SpringBoot2.7集成Swagger3
  • AcWing 1510:楼梯 ← 浮点数二分
  • 基于Matlab的视频人面检测识别,Matalb实现
  • CTF 题型 SSRF攻击例题总结
  • Linux/Ubuntu/Debian的终端中和的区别
  • Android学习进阶
  • 3种场景探讨ChatGPT如何改变投资者对测试管理初创企业的看法
  • 【Flask开发实战】防火墙配置文件解析(一)
  • JVM中对象创建过程