子查询

作者: 一江碎月 | 来源:发表于2017-11-30 14:13 被阅读0次

嵌套在其他查询中的查询叫子查询

  1. 使用到 WHERE 子句中时,子查询必须用括号括起来

  2. 子查询在 SELECT 子句中只能有一个列,除非在主查询中有多列,与子查询的所选列进行比较。

  3. 子查询返回多于一行时,只能与多值运算符一起使用,如 IN 运算符。

  4. 子查询与可以 SELECT , UPDATE , INSERT , DELETE 一直使用。

作为条件

子查询做为条件时,从内往外执行

SELECT name FROM artists WHERE ArtistId IN (
       SELECT DISTINCT ArtistId FROM albums GROUP BY ArtistId HAVING count(*)>4 -- 查找记录数大于 4 的 ArtistId
)
  • 子查询只返回了一列。
INSERT INTO albums_bak
       select * from albums
;
  • 子查询没有使用到 WHERE 条件中,所以不需要使用 ()。
  • 该功能相当于把 albums 中的数据完全复制到 albums_bak 表中。
  • 可以在复制的时候指定两个表的列的对应关系。
INSERT INTO albums_bak(AlbumId,Title,ArtistId)
       select ArtistId,Title,AlbumId from albums
;
  • 按上述语句,albums 表中的 ArtistId 值会存储到 albums_bak 的 AlbumId 字段中。

作为返回列

子查询也可做为返回列。作为返回列,子查询从外往内执行

作为返回列时,需要使用 () 括赶来。

SELECT ArtistId, name,(SELECT COUNT(*) FROM albums WHERE albums.[ArtistId] = artists.[ArtistId]) AS num FROM artists;

首先会从 artists 表中检索出每一行,将每行的 ArtistId 传入内层 SELECT语句中,再执行内层的 SELECT,并将结果做为外层的一列结果值返回。

相关文章

  • Oracel_子查询

    SQL子查询 子查询语法 子查询 (内查询) 在主查询之前一次执行完成。 子查询的结果被主查询(外查询)使用 。 ...

  • Oracle | 子查询和伪列

    1. 子查询 (1)单行子查询 (2)多行子查询 1)ANY子查询 2)ALL 子查询 2. 伪列...

  • 《SQL必知必会》第 11 课 使用子查询

    目标: 11.1 子查询 11.2 利用子查询进行过滤 11.3 作为计算字段使用子查询 11.1 子查询 查询(...

  • MySQL 子查询

    什么是子查询 为什么要使用子查询 子查询的分类 怎样使用子查询 关联子查询 要使用的数据表 1. 什么是子查询? ...

  • 数据库第七天

    子查询 查询里面还有查询注意: 子查询优先于主查询执行 最好子查询用括号 查询比ALLEN工资高的员工信息 单行子...

  • SQL查询_高级查询

    SQL查询_高级查询 一、子查询 子查询出现的位置一般为条件语句,oracle会先执行子查询,再执行父查询,子查询...

  • 17/12/6 子查询

    17/12/6 子查询 单行子查询 括号内的查询叫做子查询,也叫内部查询,先于主查询的执行。 子查询可以嵌入1.w...

  • MySql(七)子查询与虚表

    一、子查询 子查询在主查询前执行一次 主查询使用子查询的结果 子查询要用括号括起来 将子查询放在比较运算符的右边 ...

  • 数据分析之SQL子查询

    文章阅读路线: SQL子查询概念 独立子查询实例 相关子查询实例 SQL子查询常见玩伴 1.SQL子查询概念 子查...

  • MySql基础-子查询

    一、子查询定义 定义: 子查询允许把一个查询嵌套在另一个查询当中。 子查询用()括起来 子查询,又叫内部查询,相对...

网友评论

      本文标题:子查询

      本文链接:https://www.haomeiwen.com/subject/vbevbxtx.html