独立子查询

从这一篇开始要总结子查询了,什么是子查询呢?子查询就是将内部查询的结果供外部查询使用,内部查询可以取代基于常量或变量的表达式,并在运行时进行计算。通过使用子查询,可以避免在查询解决方案中把操作分成多个步骤,并在变量中保存中间查询结果的需要。

子查询可以分为独立子查询和相关子查询,那么这一篇我们总结的就是独立子查询,我想分为以下几个方面进行总结。

1,独立标量子查询

2,独立多值子查询

独立标量子查询

独立标量子查询就是返回单个值的子查询,标量子查询可以出现在外部查询中期望使用单个值的任何地方,包括WHERE,SELECT,等等。

下面是一个例子,假设现在要查询Orders表,返回表中订单ID最大的订单信息。

SQL查询代码:

USE TSQLFundamentals2008;
GO

-- 独立标题子查询
SELECT orderid,orderdate,empid,custid
FROM Sales.Orders
WHERE orderid= (SELECT MAX(orderid) FROM Sales.Orders);

查询结果:

这里,有一个需要注意的地方,就是对于有效的标量子查询,它的返回值不能超过一个(也可以没有)。如果标量子查询返回了多个值,在运行时就会失败。如下面的例子,尝试用这条查询语句来查找姓氏以字母D开头的职员的订单。

SQL查询代码:

SELECT orderid
FROM Sales.Orders
WHERE empid=(SELECT employees.empid FROM HR.Employees AS employees WHERE employees.lastname LIKE N‘D%‘);

查询结果:

独立多值子查询

多值子查询就是在一个列中返回多个值的子查询。多值子查询通常与谓词IN一起使用,例如,就像上面的那个例子,使用多值子查询来写如下查询代码。

SQL查询代码:

-- 独立多值子查询
SELECT orderid,empid
FROM Sales.Orders
WHERE empid IN (SELECT employees.empid FROM HR.Employees AS employees WHERE employees.lastname LIKE N‘D%‘);

查询结果:

注意,使用子查询完成的任务,很多时候也可以使用联接来解决。比如,上面的例子使用联接来实现的话。

SQL查询代码:

-- 使用联接查询实现
SELECT orders.orderid,employees.empid
FROM HR.Employees AS employees
LEFT JOIN Sales.Orders AS orders ON employees.empid = orders.empid
WHERE employees.lastname LIKE N‘D%‘;

查询结果同使用子查询。

所以,到底是使用子查询还是联接查询,这个要看具体需求。

独立子查询

时间: 2024-09-29 10:09:28

独立子查询的相关文章

12W学习笔记——独立子查询,更新,删除,建立视图

查询的学习进入了最后阶段了,接下来我就来介绍一下查询最后的独立子查询. 独立子查询基本上都是用SELECT  FROM  WHERE 三个语句. 例:在学院表.专业表中,查询人文与管理学院下设各专业的简称 学习完查询之后,回过头学习更新,删除,建立视图 1.更新 更新中最主要的语句是UPDATE  SET  WHERE,并且在过程中也会经常使用到独立子查询. 例:将所有专业基础课的考试方式都改为"考试" 2.删除 (1)清空表 DELETE+表名 (2)删除某些记录 删除也会经常使用独

sql独立子查询

原文地址:https://www.cnblogs.com/Spinoza/p/11595116.html

sql server——子查询

简述: 在查询语句中包含着有另外一条查询语句,被包含的查询语句称为子查询,包含着子查询的查询就称为父查询. 总之,子查询就是在查询语句里嵌套一条或者多条查询语句. 常用子查询分类: 一.独立子查询 特征:子查询语句可以独立运行 二.相关子查询 select * from student where majorId = (select majorId from major where majorId=student.majorId) 特征:子查询中引用了父查询中的字段,依赖于父查询 子查询的使用

MySQL学习分享-->查询-->子查询

子查询是指在查询语句中嵌套另一个查询语句. 子查询外面的查询部分被称为外部查询. 子查询必须包含括号. any.in.some any关键字必须与一个比较操作符一起使用,它的意思是"与子查询中返回列的数值进行逐一对比,只要其中一个数值比较为true,则返回true",我们来看一个查询实例, select id_temp from t_user_collect where commodity_id > any (select id from t_commodity); 得到如下结果

【T-SQL基础】03.子查询

本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础]04.表表达式 [T-SQL基础]05.集合运算 [T-SQL基础]06.透视.逆透视.分组集 [T-SQL基础]07.数据修改 [T-SQL基础]08.事务和并发 [T-SQL基础]09.可编程对象 ----------------------------------------------------

黑马视频-子查询

子查询:独立子查询 相关子查询 select * from (select col1,col2 from Tbl) as Tb 1.一个查询结果作为另一个查询的数据源 ,必须将子查询数据源 别名 as Tbs select * from (select fname ,fage,fgender from MyStudent where fage between 18 and 25 and fgender='女') as Tbs where  fname like '%赵' 2.作为列 select

【SqlServer系列】子查询

1   概述 1.1  已发布[SqlServer系列]文章 [SqlServer系列]SQLSERVER安装教程 [SqlServer系列]数据库三大范式 [SqlServer系列]表单查询 [SqlServer系列]表连接 1.2  本篇文章内容概要 子查询和表连接,主要是针对两张及以上表之间关联关系进行查询.子查询,按是否独立划分,分为独立子查询和相关子查询:按内部查询返回是否为单值,分为单值子查询(注意:应理解单值子查询和标量子查询关系)和多值子查询:如下表格内容为按子查询是否独立来划分

SQL之子查询

子查询概念:把一个查询的结果在另一个查询中使用就叫做子查询 1.子查询作为条件时 当我们使用子查询作为条件时,若子查询返回值为多个,则会报以下错误: "子查询返回的值不止一个.当子查询跟随在 =.!=.<.<=.>.>= 之后,或子查询用作表达式时,这种情况是不允许的." 此时我们应该使用范围[in]关键字来解决. 2.子查询的分类 a.独立子查询:可以独立来执行的查询语句做子查询使用 b.相关子查询:子查询使用了父查询中的列 3.子查询的使用方式 a.子查询作

详细讲述MySQL中的子查询操作 (来自脚本之家)

继续做以下的前期准备工作: 新建一个测试数据库TestDB: ? 1 create database TestDB; 创建测试表table1和table2: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 CREATE TABLE table1 (   customer_id VARCHAR(10) NOT NULL,   city VARCHAR(10) NOT NULL,   PRIMARY KEY(customer_id) )ENGINE=INNODB DEFAULT CH