sql where条件语句用法

SELECT、INSERT、UPDATE 或 DELETE 语句或其他子查询中的查询。任何允许使用表达式的地方都可以使用子查询。在此示例中,子查询用作 SELECT 语句中名为 MaxUnitPrice 的列表达式。

 代码如下 复制代码
other
USE AdventureWorks2008R2;
GO
SELECT Ord.SalesOrderID, Ord.OrderDate,
    (SELECT MAX(OrdDet.UnitPrice)
     FROM AdventureWorks.Sales.SalesOrderDetail AS OrdDet
     WHERE Ord.SalesOrderID = OrdDet.SalesOrderID) AS MaxUnitPrice
FROM AdventureWorks2008R2.Sales.SalesOrderHeader AS Ord

子查询也称为内部查询或内部选择,而包含子查询的语句也称为外部查询或外部选择。

许多包含子查询的 Transact-SQL 语句都可以改用联接表示。其他问题只能通过子查询提出。在 Transact-SQL 中,包含子查询的语句和语义上等效的不包含子查询的语句在性能上通常没有差别。但是,在一些必须检查存在性的情况中,使用联接会产生更好的性能。否则,为确保消除重复值,必须为外部查询的每个结果都处理嵌套查询。所以在这些情况下,联接方式会产生更好的效果。以下示例显示了返回相同结果集的 SELECT 子查询和 SELECT 联接:

 代码如下 复制代码

other
/* SELECT statement built using a subquery. */
SELECT Name
FROM AdventureWorks2008R2.Production.Product
WHERE ListPrice =
    (SELECT ListPrice
     FROM AdventureWorks2008R2.Production.Product
     WHERE Name = 'Chainring Bolts' );

/* SELECT statement built using a join that returns
   the same result set. */
SELECT Prd1. Name
FROM AdventureWorks2008R2.Production.Product AS Prd1
     JOIN AdventureWorks2008R2.Production.Product AS Prd2
       ON (Prd1.ListPrice = Prd2.ListPrice)
WHERE Prd2. Name = 'Chainring Bolts';

嵌套在外部 SELECT 语句中的子查询包括以下组件:

包含常规选择列表组件的常规 SELECT 查询。

包含一个或多个表或视图名称的常规 FROM 子句。

可选的 WHERE 子句。

可选的 GROUP BY 子句。

可选的 HAVING 子句。

子查询的 SELECT 查询总是使用圆括号括起来。它不能包含 COMPUTE 或 FOR BROWSE 子句,如果同时指定了 TOP 子句,则只能包含 ORDER BY 子句。

子查询可以嵌套在外部 SELECT、INSERT、UPDATE 或 DELETE 语句的 WHERE 或 HAVING 子句内,也可以嵌套在其他子查询内。尽管根据可用内存和查询中其他表达式的复杂程度的不同,嵌套限制也有所不同,但嵌套到 32 层是可能的。个别查询可能不支持 32 层嵌套。任何可以使用表达式的地方都可以使用子查询,只要它返回的是单个值。

如果某个表只出现在子查询中,而没有出现在外部查询中,那么该表中的列就无法包含在输出(外部查询的选择列表)中。

包含子查询的语句通常采用以下格式中的一种:

 代码如下 复制代码

WHERE expression [NOT] IN (subquery)

WHERE expression comparison_operator [ANY | ALL] (subquery)

WHERE [NOT] EXISTS (subquery)

时间: 2024-11-09 03:36:45

sql where条件语句用法的相关文章

sql between 条件语句用法

BETWEEN 条件,允许您检索在一定范围内的值. BETWEEN的语法是:  代码如下 复制代码 SELECT columns FROM tables WHERE column1 between value1 and value2; 实例  代码如下 复制代码 SELECT * FROM suppliers WHERE supplier_id between 5000 AND 5010; 当也可以用其它来判断  代码如下 复制代码 SELECT * FROM suppliers WHERE s

python 分支,循环,条件语句用法

python 分支,循环,条件语句用法 我学习了两种数据类型,1种是数字,1种是字符串.数字可以做数学运算,字符串呢可以处 理文本信息.其中数字又分为,整数,浮点数.字符串当然就是字符串了.整数,浮点数就 是描述数字的数据类型.然后呢,要做一些有意义的事情的话,就需要把这些组合起来进行 一些处理了(就是表达式了).还要注意,python解释器在做解释之前做了数据类型的检查 ,比如数字和字符串是不能相加的,如果要相加必须用str()等函数转换为字符串才行哦.但 是为什么python解释器不默认把这

SQL CREATE TABLE 语句用法

SQL CREATE TABLE 语句用法 CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库教程中的表. SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, .... ) 数据类型(data_type)规定了列可容纳何种数据类型.下面的表格包含了SQL中最常用的数据类型: 数据类型 描述 integer(size) int(size) smallint(size) tinyin

ruby sql select 查询语句用法

ruby sql select 查询语句用法 require 'mysql教程' m = Mysql.new("localhost","ruby","secret","maillist") r = m.query("SELECT * FROM people ORDER BY name") r.each_hash do |f|   print "#{f['name']} - #{f['email']

SQL ORDER BY 语句用法

ORDER BY 语句用于对结果集进行排序. ORDER BY 语句 ORDER BY 语句用于根据指定的列对结果集进行排序. ORDER BY 语句默认按照升序对记录进行排序. 如果您希望按照降序对记录进行排序,可以使用 DESC 关键字. 原始的表 (用在例子中的): Orders 表: Company OrderNumber IBM 3532 W3School 2356 Apple 4698 W3School 6953 实例 1 以字母顺序显示公司名称: SELECT Company, O

Linux中sh脚本case条件语句用法

case语句适用于需要进行多重分支的应用情况.         case分支语句的格式如下:             case 变量名 in                 模式1)             命令序列1             ;;                 模式2)             命令序列2          ;;                 *)             默认执行的命令序列             esac         case语句结构

sql union all语句用法

UNION ALL 的语法如下: [SQL 语句 1] UNION ALL [SQL 语句 2] 我们用和上一页同样的例子来显示出 UNION ALL 和 UNION 的不同 UNION ALL查询允许您结合的结果,设置2个或更多的"select"查询.它返回的所有行(即使该行存在超过一个的"select"报表). 联盟内的每个SQL语句的所有查询必须在结果中相同的字段数套类似的数据类型. 语法一个UNION ALL查询:  代码如下 复制代码 select fie

sql group by 语句用法

合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句. GROUP BY 语句 GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组. SQL GROUP BY 语法 SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name SQL GROUP BY 实例 我们拥有下面这个 "Or

SQL INSERT INTO 语句用法

INSERT INTO 语句用于向表格中插入新的行. INSERT INTO 表名称 VALUES (值1, 值2,....) 我们也可以指定所要插入数据的列: INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) LastName FirstName Address City Carter Thomas Changan Street Beijing INSERT INTO Persons VALUES ('Gates', 'Bill'