位置: 编程技术 - 正文

MySQL里面的子查询实例(mysql 子查询)

编辑:rootadmin
一,子选择基本用法 1,子选择的定义 子迭择允许把一个查询嵌套在另一个查询当中。比如说:一个考试记分项目把考试事件分为考试(T)和测验(Q)两种情形。下面这个查询就能只找出学生们的考试成绩 select * from score where event_id in (select event_id from event where type='T'); 2,子选择的用法(3种) &#; 用子选择来生成一个参考值 在这种情况下,用内层的查询语句来检索出一个数据值,然后把这个数据值用在外层查询语句的比较操作中。比如说,如果要查询表中学生们在某一天的测验成绩,就应该使用一个内层查询先找到这一天的测验的事件号,然后在外层查询语句中用这个事件号在成绩表里面找到学生们的分数记录。具体语句为: select * from score where id=(select event_id from event where date='--' and type='Q'); 需要注意的是:在应用这种内层查询的结果主要是用来进行比较操作的分法时,内层查询应该只有一个输出结果才对。看例子,如果想知道哪个美国总统的生日最小,构造下列查询 select * from president where birth=min(birth) 这个查询是错的!因为MySQL不允许在子句里面使用统计函数!min()函数应该有一个确定的参数才能工作!所以我们改用子选择: select * from president where birht=(select min(birth) from presidnet); &#; exists 和 not exists 子选择 上一种用法是把查间结果由内层传向外层、本类用法则相反,把外层查询的结果传递给内层。看外部查询的结果是否满足内部查间的匹配径件。这种“由外到内”的子迭择用法非常适合用来检索某个数据表在另外一个数据表里面有设有匹配的记录 数据表t1 数据表t2 I1 C1 I2 C2 1 2 3 A C 2 3 4 C A 先找两个表内都存在的数据 select i1 from t1 where exists(select * from t2 where t1.i1=t2.i2); 再找t1表内存在,t2表内不存在的数据 select i1 form t1 where not exists(select * from t2 where t1.i1=t2.i2); 需要注意:在这两种形式的子选择里,内层查询中的星号代表的是外层查询的输出结果。内层查询没有必要列出有关数据列的名字,田为内层查询关心的是外层查询的结果有多少行。希望大家能够理解这一点 &#; in 和not in 子选择 在这种子选择里面,内层查询语句应该仅仅返回一个数据列,这个数据列里的值将由外层查询语句中的比较操作来进行求值。还是以上题为例 先找两个表内都存在的数据 select i1 from t1 where i1 in (select i2 from t2); 再找t1表内存在,t2表内不存在的数据 select i1 form t1 where i1 not in (select i2 from t2); 好象这种语句更容易让人理解,再来个例子 比如你想找到所有居住在A和B的学生。 select * from student where state in(‘A','B') 二, 把子选择查询改写为关联查询的方法。 1,匹配型子选择查询的改写 下例从score数据表里面把学生们在考试事件(T)中的成绩(不包括测验成绩!)查询出来。 Select * from score where event_id in (select event_id from event where type='T'); 可见,内层查询找出所有的考试事件,外层查询再利用这些考试事件搞到学生们的成绩。 这个子查询可以被改写为一个简单的关联查询: Select score.* from score, event where score.event_id=event.event_id and event.event_id='T'; 下例可以用来找出所有女学生的成绩。 Select * from score where student_id in (select student_id form student where sex = ‘f'); 可以把它转换成一个如下所示的关联查询: Select * from score Where student _id =student.student_id and student.sex ='f'; 把匹配型子选择查询改写为一个关联查询是有规律可循的。下面这种形式的子选择查询: Select * from tablel Where column1 in (select column2a from table2 where column2b = value); 可以转换为一个如下所示的关联查询: Select tablel. * from tablel,table2 Where table.column1 = table2.column2a and table2.column2b = value; (2)非匹配(即缺失)型子选择查询的改写 子选择查询的另一种常见用途是查找在某个数据表里有、但在另一个数据表里却没有的东西。正如前面看到的那样,这种“在某个数据表里有、在另一个数据表里没有”的说法通常都暗示着可以用一个left join 来解决这个问题。请看下面这个子选择查询,它可以把没有出现在absence数据表里的学生(也就是那些从未缺过勤的学生)给查出来: Select * from student Where student_id not in (select student_id from absence); 这个子选择查询可以改写如下所示的left join 查询: Select student. * From student left join absence on student.student_id =absence.student_id Where absence.student_id is null; 把非匹配型子选择查询改写为关联查询是有规律可循的。下面这种形式的子选择查询: Select * from tablel Where column1 not in (select column2 from table2); 可以转换为一个如下所示的关联查询: Select tablel . * From tablel left join table2 on tablel.column1=table2.column2 Where table2.column2 is null; 注意:这种改写要求数据列table2.column2声明为not null。

推荐整理分享MySQL里面的子查询实例(mysql 子查询),希望有所帮助,仅作参考,欢迎阅读内容。

MySQL里面的子查询实例(mysql 子查询)

文章相关热门搜索词:mysql子查询效率如何,mysql子查询和join,mysql子查询详解,mysql子查询写法,mysql子查询写法,mysql子查询写法,mysql子查询效率如何,mysql子查询效率如何,内容如对您有帮助,希望把文章链接给更多的朋友!

mysql的日期和时间函数大全第1/2页 mysqlSELECTsomethingFROMtbl_nameWHERETO_DAYS(NOW())-TO_DAYS(date_col)=;DAYOFWEEK(date)返回date的星期索引(1=Sunday,2=Monday,...7=Saturday)。索引值符合ODBC的标准。mysqlSELECTDAYOFWEEK

MySQL的数据类型和建库策略分析详解 一、数字类型。数字类型按照我的分类方法分为三类:整数类、小数类和数字类。我所谓的数字类,就是指DECIMAL和NUMERIC,它们是同一种类型。它严格

MySQL的语法及其使用指南 先看看MySQL支持的SQL语句的分类1,数据库的选取,创建,丢弃和变更usecreatedatabasedrapdatabasealterdatabase2,数据表和索引的创建,变更和丢弃createtabledrop

标签: mysql 子查询

本文链接地址:https://www.jiuchutong.com/biancheng/319882.html 转载请保留说明!

上一篇:MySQL进阶SELECT语法篇

下一篇:mysql的日期和时间函数大全第1/2页(mysql的日期时间函数)

  • 小规模纳税人合理避税
  • 增量留抵退税会计处理
  • 土地摊销全部计入成本吗
  • 兼职工资如何发放给个人
  • 收到红字进项发票需要认证么
  • 增值税加计扣除5%政策
  • 税控服务费减免税款分录
  • 加油票怎么记账凭证
  • 税款多交一分钱怎么做分录
  • 公司办公室收到上级主管部门的一份
  • 电子缴税付款凭证
  • 当月不抵扣的增值税发票怎么做账
  • 增值税科目设置的凭证处理方面的特殊要求
  • 开具发票时提示离线发票累计金额超限?教你如何处理
  • 开餐费发票要开具数量和单价吗
  • 销售已使用过的固定资产增值税
  • 个人所得税纳税比例
  • 客户忠诚度的表现行为有哪些
  • 公司基本户没开影响报税吗
  • 速动资产不包括存货和预付账款
  • 跨年度主营业务收入错账调整
  • 1697510703
  • 增值税及附加税是什么意思
  • w7系统怎么用
  • Mtdacq.exe - Mtdacq是什么进程 有什么用
  • msoicons.exe是什么文件
  • 让绿萝疯长的妙招
  • 圣胡安岛战争
  • 在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
  • 非常好看的头像
  • 前端vue面试题2020
  • Vue中 provide、inject 详解及使用
  • 商贸企业出口退税吗
  • 小规模纳税人能开6%增值税专用发票吗
  • 配送中心适合哪种类型的企业
  • 为博客园开发了什么项目
  • Fatal error: Call to undefined function mysqli_init() in 路径
  • 旅游业差额开票税率
  • 律师跨省办案收取的费用叫什么
  • 公司归还股东借款是否需要股东会决议
  • 账务核对的主要内容
  • 个体工商户免费开票额度
  • 支付长期借款利息
  • 调研费用包括哪些项目
  • 企业分配利润的原因
  • 筹建期的印花税怎么算
  • 如何加强存货管理,提高存货周转率
  • 预付账款余额在贷方为
  • 行政事业单位的营业执照叫什么
  • 暂估商品会计分录
  • 母公司代发子公司工资,子公司申报个税
  • 保险增值税发票是什么
  • 土地使用税和房产税是一起的吗
  • 专票三流合一
  • 账务调整的原则
  • 银行记账本怎么填写
  • 怎么用U盘装系统
  • win8连接wifi界面消失
  • linux连接ssr
  • centos7配置vncserver
  • 制作xp系统盘需要多大u盘
  • win7设备管理器里面没有网络适配器
  • 近期win7蓝屏
  • win10提示空闲计时器已过期
  • unity 3d数学
  • 好好了解 英文
  • 辅组什么词?
  • node.js教程详细
  • 区分例假和怀孕前乳头疼
  • jquery二级导航栏
  • 如何在Android上使用cv库
  • javascript数据结构与算法
  • jquery移动版
  • 污水处理厂房产税优惠政策
  • 盐城合作医疗在手机上怎么交
  • 兴安盟县城
  • 电子税务局财务制度备案在哪
  • 多缴税款可以抵滞纳金吗?
  • 税务局查帐怎么查
  • 苏州虎丘区税务局在哪里
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设