ue3dSQL Server中的子查询

SQL Server中的子查询

分类:
ue3d - SQL Server中的子查询

本文中3D天堂将介绍什么是SQL Server(Transact-SQL)中的子查询以及如何使用它。

Transact-SQL子查询是什么?

子查询是嵌套在SELECT、UPDATE、INSERT或DELETE语句(DML语句)中的查询(SELECT语句),子查询可以嵌套在另一个子查询中,可以在SQL Server语句中需要表达式的任何地方编写子查询。

内部和外部查询:子查询也称为INNER QUERY或INNER SELECT,包含子查询的查询称为OUTER QUERY或OUTER SELECT。

注意:以下是应该了解的有关SQL Server的几个要点。

  1. 子查询返回单个值。
  2. 子查询总是包含在括号中。
  3. 子查询必须包含SELECT子句和FROM子句。
  4. 子查询不能包含COMPUTE和 FOR BROWSE子句。
  5. ORDER BY子句只能包含在TOP语句中。
  6. 无法更新使用子查询创建的视图。
  7. 子查询最多可以嵌套32层。

SQL Server中的示例子查询

子查询可以写在SELECT子句、FROM子句或WHERE子句中,首先创建两个将在示例中使用的表。

产品表:

Create table ProductsTable
(
ID int Primary Key,
Name nvarchar(50),
Price int,
Details nvarchar(150)
)
Insert into ProductsTable Values (1, 'Laptop', 30000, 'A laptop for home users')
Insert into ProductsTable Values (2, 'Washing Machine', 20000, 'White color front load machine ')
Insert into ProductsTable Values (3, 'TV', 22000, '32 inch HD LED TV')
Insert into ProductsTable Values (4, 'Fridge', 30000, '190 Ltr double door fridge')
ue3d - SQL Server中的子查询

产品销售记录表:

Create table SaleRecordTable
(
Id int Primary Key Identity,
ProductID int,
SoldQuantity int,
SaleDate Date
)
Insert into SaleRecordTable Values (2, 3, '10-10-2016')
Insert into SaleRecordTable Values (3, 5, '10-10-2016')
Insert into SaleRecordTable Values (2, 2, '11-10-2016')
Insert into SaleRecordTable Values (4, 6, '11-10-2016')
Insert into SaleRecordTable Values (2, 6, '12-10-2016')
Insert into SaleRecordTable Values (4, 6, '13-10-2016')
ue3d - SQL Server中的子查询

WHERE子句

可以在SELECT语句中添加子查询。

可以使用比较运算符来比较列的值并从子查询中获取返回值。

需要显示在任何特定日期售出的产品及其数量,可以在WHERE和IN中使用子查询来得到这个结果。

显示在特定日期销售的给定产品的数量:

-- Where Clause
Select ID, Name, Details
From ProductsTable
Where ID = (Select ProductID from SaleRecordTable Where SaleDate ='10-10-2016' AND ProductID =2)
ue3d - SQL Server中的子查询

显示特定日期所有已售出的产品数量:

-- Where Clause
-- IN
Select ID, Name, Details
From ProductsTable
Where ID IN (Select ProductID from SaleRecordTable Where SaleDate ='10-10-2016')
ue3d - SQL Server中的子查询

现在如果需要显示已经售出的产品,那么可以使用NOT IN和WHERE子句。

-- NOT IN
Select ID, Name, Details
From ProductsTable
Where ID NOT IN (Select ProductID from SaleRecordTable)
ue3d - SQL Server中的子查询

选择子句

可以在SELECT子句中添加子查询,想使用聚合函数(如SUM、COUNT、MIN或MAX)获取数据,但不想在主查询中应用聚合函数时使用它。

假设3D天堂需要显示产品名称和销售总量,然后可以使用子查询来获得所需的结果。

-- Select Clause
Select Name,
(Select SUM(SoldQuantity) from SaleRecordTable where ProductId = ProductsTable.ID) as 'Total Quantity Sold'  
from ProductsTable
ue3d - SQL Server中的子查询

FROM子句

可以在FROM子句中添加子查询,FROM中的子查询可用于返回多行和多列,子查询返回的结果集称为派生表。

假设需要显示产品名称和销售总量,然后可以使用子查询来获得所需的结果,在下面给出的查询中,子查询以名称作为别名,该名称用于获取子查询的字段。

最终结果将排除根本未售出的产品。

-- From Clause
select Name, Subquery1.total_quantity
From ProductsTable,
(Select ProductID, SUM(SoldQuantity) as total_quantity from SaleRecordTable  GROUP BY ProductId) Subquery1
where Subquery1.ProductID = ProductsTable.ID
ue3d - SQL Server中的子查询

以上是3D天堂关于SQL Server中的子查询的全部内容,如果你有任何反馈,请随时在本页面下方留言。

上一个内容
下一个内容

相关信息

  • 类型:知识
  • 字数:750
  • 字符:3280
  • 适用软件:Unity
  • 说明:无
  • 编号:155690

热门内容

提示:3D天堂作为服务提供者,尊重网络版权及知识产权,对某些行为的发生不具备充分的监控能力,若无意间侵犯到您的权利,请 联系我们,我们会在收到信息后尽快给予处理。

本站文章版权归本站自创作者所有,未经允许不得转载!