当前位置:  数据库>sqlserver

SQL中嵌套SELECT 语句用法示例

    来源: 互联网  发布时间:2014-08-29

    本文导语:  SELECT 语句是SQL语句中最重要的语句,这里介绍SQL中的嵌套SELECT 语句的用法。 嵌套SELECT 语句也叫子查询,形如:   代码示例: SELECT name FROM bbc WHERE region = (SELECT region FROM bbc WHERE name = 'Brazil') 一个 SELECT 语句的查询结果可以作为...

SELECT 语句是SQL语句中最重要的语句,这里介绍SQL中的嵌套SELECT 语句的用法。

嵌套SELECT 语句也叫子查询,形如:
 

代码示例:
SELECT name FROM bbc WHERE region = (SELECT region FROM bbc WHERE name = 'Brazil')

一个 SELECT 语句的查询结果可以作为另一个语句的输入值。

上面的 SQL 语句作用为获得和'Brazil'(巴西)同属一个地区的所有国家。

子查询不但可以出现在 Where 子句中,也可以出现在 from 子句中,作为一个临时表使用,也可以出现在 select list 中,作为一个字段值来返回。

本节仅介绍 Where 子句中的子查询。

在 Where 子句中使用子查询,有一个在实际使用中容易犯的错在这里说明一下。

通常,就像上面的例子一样,嵌套的语句总是和一个值进行比较。

语句 (SELECT region FROM bbc WHERE name = 'Brazil') 应该仅返回一个地区,即 'Americas'. 但如果我们在表中再插入一条地区为欧洲,国家名称为 Brazil 的记录,那会发生什么情况?

这将会导致语句的运行时错误.因为这个 SQL 语句的语法是正确的,所以数据库引擎就开始执行,但当执行到外部的语句时就出错了。

因为这时的外部语句就像好像是 SELECT name FROM bbc WHERE region = ('Americas', 'Europe'),这个语句当然报错了。

解决方法:
有一些 SQL 查询条件允许对列表值(即多个值)进行操作。

例如"IN" 操作符,可以测试某个值是否在一个列表中。

以下语句,可以安全的执行而不出错,不管表中有多少条包含Brazils的记录:
 

代码示例:
SELECT name FROM bbc WHERE region IN
(SELECT region FROM bbc WHERE name = 'Brazil')

一、给出人口多于 Russia(俄国)的国家名称
 

代码示例:
SELECT name FROM bbc
WHERE population>
(SELECT population FROM bbc
WHERE name='Russia')

二、给出'India'(印度), 'Iran'(伊朗)所在地区的所有国家的所有信息
 

代码示例:
SELECT * FROM bbc
WHERE region IN
(SELECT region FROM bbc
WHERE name IN ('India','Iran'))

三、给出人均 GDP 超过'United Kingdom'(英国)的欧洲国家。
 

代码示例:
SELECT name FROM bbc
WHERE region='Europe' AND gdp/population >
(SELECT gdp/population FROM bbc
WHERE name='United Kingdom')

    
 
 

您可能感兴趣的文章:

  • sql语句中单引号嵌套问题(一定要避免直接嵌套)
  • SQL集合嵌套查询的三个例子
  • 关于SQL嵌套的误解分析
  • 请问高手:sun下如何编译informix的C++,也就是嵌套sql的c++,急呀
  • sql server中嵌套游标的例子
  • SQL嵌套查询示例解析
  • SQL Server误区30日谈 第26天 SQL Server中存在真正的“事务嵌套”
  • SQL嵌套查询实例代码
  • t-sql/mssql用命令行导入数据脚本的SQL语句示例
  • 拼接SQL字符串方法示例
  • sql 行转列示例代码
  • sql中count或sum为条件的查询示例(sql查询count)
  • sql 取代游标的写法示例
  • sql使用cast进行数据类型转换示例
  • sql 语句插入结果为select和值混合示例
  • sql2005统计技巧示例
  • sql函数实现递归查询示例
  • sql递归函数示例
  • java实现简单的给sql语句赋值的示例
  • sql多表行转列、级联行转列示例代码
  • sql级联删除与级联更新方法示例
  • t-sql清空表数据的两种方式示例(truncate and delete)
  • sql server 临时表的删除示例
  • php导入SQL文件(示例代码)
  • SQL 分布式查询、插入递增列示例
  • sql四舍五入函数示例
  • sql带分隔符的截取字符串示例
  • sql2005 存储过程分页示例代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法
  • C#调用SQL语句时乘号的用法
  • sql中all,any,some用法
  • SQL事务用法begin tran,commit tran和rollback tran的用法
  • C#调用SQL语句时乘号的用法 iis7站长之家
  • sql查询语句group by用法简介
  • sql server中Exists的用法举例
  • 浅析SQL语句中GROUP BY的用法
  • sql多表级联更新update的用法举例
  • sql server中ISNULL函数与Mysql中IFNULL函数的用法
  • SQL中object_id函数的用法
  • SQL cursor用法实例
  • sql语句中isnull函数用法 实例教程
  • sql Set IDENTITY_INSERT的用法
  • if exists和if not exists关键字用法(sql server)
  • SQL SELECT DISTINCT 语句用法
  • sql数据库中ISNULL函数用法 sql语句判断值是否为空
  • [Oracle] 常用工具集之SQL*Loader的用法
  • 求SQL Server 2000 JDBC的用法!(高分)
  • sql server中Group By语句的用法
  • sql server 存储过程中If Else的用法举例
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3