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

上海网站建设公设计师论坛

上海网站建设公,设计师论坛,贵州做网站怎么推广,网店美工的意义与发展今天总结的关于exists的作用和用法#xff0c;借鉴了一些他人的想法#xff0c;并进行了一些补充#xff0c;希望对你们有所帮助 引言 exists可以算得上是mySQL的一个关键字#xff0c;在很多sql语句中经常可以用到#xff0c;为了更好地理解exists关键字的用法#xf…今天总结的关于exists的作用和用法借鉴了一些他人的想法并进行了一些补充希望对你们有所帮助 引言 exists可以算得上是mySQL的一个关键字在很多sql语句中经常可以用到为了更好地理解exists关键字的用法下面从一个简单的例子引入下面是一个sql语句例子 select * from student where not EXISTS (select 1 from course where not EXISTS(select 1 from scwhere SC.S_idstudent.S_id and SC.C_idcourse.C_id))前置知识 要想理解exists的作用你要知道什么是相关子查询和不相关子查询 数据准备 -- 课程信息 DROP TABLE IF EXISTS student; CREATE TABLE course (C_id int NOT NULL,C_name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,PRIMARY KEY (C_id) USING BTREE ) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci ROW_FORMAT Dynamic; INSERT INTO course VALUES (1, 语文); INSERT INTO course VALUES (2, 英语); INSERT INTO course VALUES (3, 数学);-- 选修记录 DROP TABLE IF EXISTS sc; CREATE TABLE sc (S_id int NOT NULL,C_id int NULL DEFAULT NULL ) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci ROW_FORMAT Dynamic; INSERT INTO sc VALUES (1, 1); INSERT INTO sc VALUES (1, 2); INSERT INTO sc VALUES (1, 3); INSERT INTO sc VALUES (2, 2);-- 学生信息 DROP TABLE IF EXISTS student; CREATE TABLE student (S_id int NOT NULL,s_name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,PRIMARY KEY (S_id) USING BTREE ) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci ROW_FORMAT Dynamic; INSERT INTO student VALUES (1, 张三); INSERT INTO student VALUES (2, 李四); INSERT INTO student VALUES (3, 王五);具体图如下 基本作用 EXISTS 用于在主查询中执行条件判断以确定是否存在符合子查询条件的行。它返回布尔值TRUE 或 FALSE表示子查询是否至少返回一行结果。 例如 SELECT s_id, s_name FROM student WHERE EXISTS (SELECT 1FROM scWHERE sc.s_id student.s_id );执行步骤是 从student表中取第一条数据带入到子查询中 判断在sc表中至少存在一条数据满足条件sc.s_id student.s_id 存在 返回student表中s_id和s_name字段 不存在例如 SELECT s_id, s_name FROM student WHERE EXISTS ( SELECT 1 FROM sc WHERE sc.s_id 4 );没有任何输出 所以上面sql语句输出结果为 所以上面sql语句的意思是 对于student表中的每一条数据来说遍历sc表满的数据足条件sc.s_id student.s_id的记录的s_ids_name 也就是说查找有选修记录的学生信息 exists嵌套 了解基本作用后就可以尝试了解最开始的问题 select * from student where not EXISTS (select 1 from course where not EXISTS(select 1 from scwhere SC.S_idstudent.S_id and SC.C_idcourse.C_id))可以直观看出上面有两层嵌套 这是第一层 select 1 from course where not exists (select 1 from course where ...)这是第二层 select 1 from sc where SC.S_idstudent.S_id and SC.C_idcourse.C_id)不要慌我们一步一步分析 从student表中取一条数据放到第一层exists嵌套中 然后判断是否不存在满足第一层嵌套exists的条件where not exists (select 1 from course where ...) 这是一个exists的嵌套语句同理再在course表中取一条数据然后和student表中的第一条数据放到第二层嵌套中 select 1 from sc where SC.S_idstudent.S_id and SC.C_idcourse.C_id)可以发现已经没有嵌套了来判断是否不存在一条数据满足上面条件 可以发现满足条件也就是exists即存在选修记录返回false 接着带入course表中第二条数据也存在返回false, 接着带入course表中第三条数据也存在返回false, 此时course表中没有其他数据也就是说不存在他没有选修过的课程返回true,输出第一条学生信息 同理从student表中取第二条数据放到第一层exists嵌套中判断是否满足 …………带入course表中第一条数据不存在选修记录返回true,此时course表存在他没有选修过的课程返回false,不输出 同理从student表中取第三条数据放到第一层exists嵌套中判断是否满足 …………带入course表中第一条数据也不存在他没选修过的课程返回true对于第一个not exists而言只有false才输出此时course表存在他没有选修过的课程返回false,不输出 对于student表中数据而言不存在选修记录中不存在的课程的学生信息 输出结果为 最后总结发现上面sql句子的意思是 所有课程都选修的学生 也就是说查找选修了所有课程的学生信息。 类似的还有以下内容 select student.s_id, student.s_name from student where EXISTS (select 1 from course where not EXISTS(select 1 from scwhere SC.S_idstudent.S_id and SC.C_idcourse.C_id))所有课程还没对应的学生 答案 select student.s_id, student.s_name from student where not EXISTS (select 1 from course where EXISTS(select 1 from scwhere SC.S_idstudent.S_id and SC.C_idcourse.C_id))课程都不对应的学生 答案3 select * from student where EXISTS (select 1 from course where EXISTS(select 1 from scwhere SC.S_idstudent.S_id and SC.C_idcourse.C_id))课程对应的学生 答案12 参考链接 https://zhuanlan.zhihu.com/p/20005249 https://cloud.tencent.com/developer/article/2146774
http://www.hkea.cn/news/14497478/

相关文章:

  • 福州网站建设信息关于网络营销的网站
  • 合肥官方网站优化费用如何建立一个网站 供客户选图
  • 一般做网站用什么字体广西教育平台网站建设
  • WordPress小说网站源码定制高端网站建设公司
  • 企业邮箱大全号码大全网站优化seo怎么做
  • 网站站长承德企业网站建设
  • 做网站可以用微软雅黑字体么南阳网站开发公司
  • 网站的手机客户端怎样做花瓣网是仿国外那个网站做的
  • 51网站空间还有吗wordpress+下载站
  • 西安创意网站建设网站开发服务税率是多少
  • 沈阳工程建设信息网站搜狗浏览器网页版入口
  • 做网站用什么后缀好十大免费最亏的免费app
  • 包站长ppt网站烟台seo关键词排名
  • 鄞州区建设局网站建立网络平台需要什么
  • 网站建设中模板奥联网站建设
  • php做简单网站教程i深建官方网站
  • 唐山网站建设设计福田瑞沃前四后四车价格
  • 进一步网站建设广告彩页设计
  • 网站留言系统编写代码免费域名注册申请
  • 网站源代码怎么上传聊城wap网站制作
  • 石家庄行业网站wordpress与typecho
  • 精品资源共享课网站建设网站方案范文
  • 课程网站建设规划方案网站网站设计公司
  • 响应式网站的字体设置推广做任务 有哪些网站
  • 网站建设中html模板网站首页关键词
  • 高端网站开发秦帝discuz网站模板下载
  • 南宁模板建站定制网站石家庄网站建设排名
  • 搜索引擎网站优化和推广方案如何做网站的
  • 河南宏业建设管理有限公司网站打金新开传奇网站
  • 富阳网站建设 优帮云网站建设拍金手指排名贰拾