龙空技术网

SQL SERVER:多表查询之—列子查询(24)

梦幻63288 87

前言:

如今你们对“sql如何查询数据表中某一列所有值”可能比较讲究,朋友们都想要学习一些“sql如何查询数据表中某一列所有值”的相关资讯。那么小编同时在网络上汇集了一些关于“sql如何查询数据表中某一列所有值””的相关知识,希望朋友们能喜欢,看官们一起来了解一下吧!

一、列子查询:

1、子查询返回结果为一列多行;

2、常用的操作符:IN、NOT IN、ALL、ANY、SOME

3、操作符使用说明:

1)IN:IN后面的子查询可以返回多条记录,用于父查询匹配子查询返回的多个单列值;

2)NOT IN :将父查询条件中的表达式与子查询返回的结果进行比较,把不匹配的信息显示出来;

3)ALL:父查询相对于子查询中返回列表的所有值都必须满足。例:父查询的值为1、2、3、4,子查询里的值为2、3,现要求是 父查询的值 ALL>(子查询),则返回结果为4,即必须大于子查询里的所有值;

4)ANY:父查询相对于子查询中返回列表的所有值只满足一个即可。例:父查询的值为1、2、3、4,子查询里的值为2、3,现要求是 父查询的值 ANY>(子查询),则返回结果为3、4,即父查询的值只能大于子查询中其中一个值即可;

5)SOME:与ANY等同,只要用ANY的地方,就可以用SOME

4、例:

下面的查询示例 所用的表关系示意图

1)查询部门名称为销售1部、仓储部的人员姓名、年龄、部门id

USE MyServerGOSELECT E_Name,E_Age,D_Id FROM Employee WHERE D_IdIN(SELECT D_Id FROM Department WHERE D_Name='销售1部' OR D_Name='仓储部')GO

2)查询部门名称不为销售1部、仓储部的人员姓名、年龄、部门id

USE MyServerGOSELECT E_Name,E_Age,D_Id FROM Employee WHERE D_IdNOT IN(SELECT D_Id FROM Department WHERE D_Name='销售1部' OR D_Name='仓储部')GO

3)查询比销售2部所有人员年龄都大的员工姓名、年龄

USE MyServerGOSELECT E_Name,E_Age,D_Id FROM Employee WHERE E_Age >ALL(      SELECT E_Age FROM Employee WHERE D_Id=      (SELECT D_Id FROM Department WHERE D_Name='销售2部'))GO

4)查询比销售2部其中一个员工的年龄大的员工姓名、年龄、部门Id

USE MyServerGOSELECT E_Name,E_Age,D_Id FROM Employee WHERE E_Age >ANY(      SELECT E_Age FROM Employee WHERE D_Id=      (SELECT D_Id FROM Department WHERE D_Name='销售2部'))GO

5、ANY、IN、NOT IN 的使用异同点:

1)=ANY 与 IN 等效,即父查询中列的值必须在子查询返回值列表中存在;

2)<>ANY:父查询结果中,列的值与子查询返回值列表中只要有一个不相同就返回;

3、NOT IN:父查询的结果中,列的值必须不能存在子查询中。

标签: #sql如何查询数据表中某一列所有值