选择显示字体大小

跟我学ms sql server(3)

  (三)用sql来合并查询
  你是否曾经为了得到所需要的信息而反复查询?子选择,也被称为子查询,也许正是你在寻找的。sql的这项功能使你可以在一组结果中查询,创造性地给结果组加以限定,或是在向数据库的单一调用中将结果与一个无关系的查询做相关。 这篇文章中我将给出几个子选择的例子并就何时使用他们进行讨论。

  在一个结果组中搜索
  子选择的理念很简单:一个选择查询安置在另一个查询内部,创建一个在单一声明搜索中不可用的资源。子选择允许查询的合并,结果组比较的责任落到了数据库中而不是应用软件代码中。
  使用这个功能的一个途径是对两个表格中的可比数据专栏中的值进行定位。例如,我的一个数据库有两个表格,album和lyric。我可以很容易地通过下面的子查询声明来找到每一个metallica的歌曲中包含“justice”的歌名:
select song_name from album
where band_name = ‘metallica’
and song_name in
(select song_name from lyric
where song_lyric like ‘%justice%’);
  这个例子是很简单的,我从album表格中选择了所有metallica的歌曲,接着,我在lyric表格中选择所有包含“justice”的歌曲,最后,我使用in关键字来从lyric表格结果组中显示的album表格中返回歌曲名称。
  我使用lyric表格结果组来给album表格中的结果做限定。where子句中的子选择部分是完全自包含的,因此我不需要使用例如album.song_name和lyric.song_name等完整的专栏名称。我没有从最终结果组的lyric表格中返回任何值,如果我需要歌曲的lyric,我会使用一个join声明。

  使用not in排除结果
  你可以使用not in关键字来获得明确地不被包含在另一个结果组中的结果。例如,我想要通过下面的代码来返回metallica在“and justice for all”专辑中不包含单词“justice”的歌曲:
select song_name from album
where album_name = ‘and justice for all’
and band_name = ‘metallica’
and song_name not in
(select song_name from lyric
where song_lyric like ‘%justice%’);
  在前面的sql代码中,我选择了metallica的“and justice for all,”专辑中的所有歌曲,接着是带有歌词中带有“justice”所有歌曲,最后从在lyric结果组中没有出现的album结果组返回了所有歌曲。较之于返回两个查询并使用代码来比较数组,你通过一个单独的声明就可以得到确切的结果。

  使用exists来相关结果
  有时你可以通过多种途径来访问相同的数据,而且你需要对你的结果进行匹配(或相关)来得到值的交叉区。例如,我可以通过搜索album表格来得到metallica的歌曲列表,可是,我也可以从我的cover表格中得到由damage, inc表演的metallica的歌曲的列表,我可以在两个表格中直接比较查询结果来对值作相关。
select album.song_name from album
where album.band_name = ‘metallica’
and exists
(select cover.song_name from cover
where cover.band_name = ‘damage, inc.’
and cover.song_name = album.song_name);
  在sql代码中,我使用完整的专栏名称,这是因为我直接对两个表格作比较,而不仅仅是将结果组作为一个被动资源来使用。我并不从cover表格中返回结果。一些数据库支持not exists关键字来确保你并没有匹配。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons