T-SQL高级查询 - Angel's Blog.

ing
 
 
软件开发,程序设计,前端设计
 
 
首页 > code > T-SQL高级查询

T-SQL高级查询

 
合并多个表中的数据有三种方法:
1)联合(union)——合并多个数据表中的行
2)子查询——将一个查询包含到另一个查询
3)连接——合并多个数据表中的列
查询
1)简单的子查询
select 列 from 表 where 字段1 > (子查询)
其中,“>”可以为其他的比较运算符,(= , > , < , >= , <= , <> , != , !> , !<)
SQL Server中,执行的顺序是先执行子查询部分得到子查询的值,然后再去执行父查询部分。
同样也适用于insert,delete的操作。
查询可以代替表连接,但表连接却不一定能代替子查询,请看demo1的语句。
demo1:
select stuName from stuInfo inner join stuMarks
on stuInfo.stuNo = stuMarks.stuNo where writtenExam = 60
go
在demo1的代码中,可以用如下的子查询,可以达到同样的效果,请看demo2的语句:
demo2:
select stuName from stuInfo 
where stuNo = (select stuNo from stuMarks where writtenExam > 60)
go
在demo2的代码中,很好地解决了子查询
2)in 与 not in 的子查询
select 列 from 表 where 字段1 in (多条记录的子查询)
众所周知,子查询返回的是一条record(记录)甚至可以是空的record,尤其是子查询后面有“比较运算
符”在后,不能返回也不允许返回多条record。
但是当我们有的时候却想要查询多条记录,这样的问题该如何解决呢?
这时,in的子查询能轻易地解决问题,请看demo3的语句。
demo3:
select stuName from stuInfo
where stuNo in (select stuNo from stuMarks where writtenExam > 60)
所以,in 子查询后面可以跟随多条记录的子查询
同样地, not in 也如此。
3)exists 与 not exists的子查询
if exists (子查询)
  语句
exists:在T-SQL查询语句中,用来查询是否存在**(**指的是数据库或者表,等)的检测语句。
同样,它也适用于子查询
demo4:
if exists (select * from stuMarks where writtenExam > 60)
begin
 print ‘成绩及格,奖励加分2分’
 update stuMarks set writtenExam = writtenExam+2
 select * from stuMarks
end
else
begin
 print ‘成绩不合格,统一加分5分’
 update stuMarks set writtenExam = writtenExam+5
 select * from stuMarks
end
同理,not exists同样适用。
或者通过RSS 关注本站的更新 ^ O ^ 。” —  by  转载请注明:来自 Angel's Blog.
本文永久链接: http://www.0ee.com/2010/09/01/t_sql_advance_query.html
 
分类: code标签: ,
 
  • QQ书签
  • Del.icio.us
  • 百度收藏
  • Google
  • 饭否
  • FriendFeed
 

 
评论 (0) Trackbacks (0)
发表评论 Trackback
 
No Comment Contributed by Visitors
(Got a sofa?)
  1. 本文目前尚无任何评论.
Leave Comments Here...

:) :-D :( :-o 8-O :-? 8) lol :-x :-P oops cry evil twisted wink ? idea :-| arrow mrgreen roll !

(required)

(required)

网址随您("http://"可以省略)

(Ctrl+Enter)

  • 本站不会泄露您的 Email 地址, 敬请放心.
  • 本站已开启缓存, 请不要重复提交评论.
  • 请注意: 带有 《广告(链)、不健康、或者 产品名字》 的评论一律视为spam.
  • 支持常用 HTML 标签调用, 插入 HTML 标签需注意: < == &lt;> == &gt;.
  • 仅当某人针对您的评论做出回应时, 您才会收到由本站发出的邮件通知.
  • 如您希望以相同方式通知某位网友, 请点击  按钮进行回复.
  • 允许在评论中使用如下代码: 
    <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> 
    <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> 
    .
  • 鼠标悬浮到评论中的 @someone 区域即可自动显示 someone 的评论内容.
 
 
  • 正在加载...