在SQL语言中,当一个查询语句嵌套在另一个查询的查询条件之中时,称为子查询
子查询总是写在圆括号中,可以用在使用表达式的任何地方
如:嵌套在Select 、Insert 、Update 或Delete语句或其他子查询中的查询
任何允许使用表达式的地方都可以使用子查询
子查询也称为内部查询或内部选择,而包含子查询的语句也称为外部查询或外部选择
许多包含子查询的 Transact-SQL 语句都可以改用联接表示
在 Transact-SQL 中,包含子查询的语句和语义上等效的不包含子查询的语句在性能上通常没有差别
但是,在一些必须检查存在性的情况中,使用联接会产生更好的性能
否则,为确保消除重复值,必须为外部查询的每个结果都处理嵌套查询
所以在这些情况下,联接方式会产生更好的效果
以下示例显示了返回相同结果集的Select子查询和Select联接: Select Name FROM AdventureWor ks
Production
Product Where ListPrice = (Select ListPrice FROM AdventureWor ks
Production
Product Where Name = ’Chainring Bolts’ ) Select Prd1
Name FROM AdventureWor ks
Production
Product AS Prd1 JOIN AdventureWor ks
Production
Product AS Prd2 ON (Prd1
ListPrice = Prd2
ListPrice) Where Prd2
Name = ’Chainring Bolts’ 嵌套在外部Select语句中的子查询包括以下组件: ●包含常规选择列表组件的常规 Select查询
●包含一个或多个表或视图名称的常规 F