成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何巧妙利用SQL Server的EXISTS結構

數據庫 SQL Server
很少有開發者會去使用SQL Server中的一個非常有用的東西——EXISTS結構。你可以在各種情況中用到EXISTS結構,在這篇文章中我會向大家介紹其中的一些。

EXISTS結構

EXISTS結構是一個TSQL函數,這個函數會就圓括號中的子查詢返回一個布爾變量。如果子查詢返回了任意行的話,這個結構就返回真;否則,它就返回假。這個結構特別適用于查詢表中是否存在某些記錄。它也非常適合來決定是否在表中運行更新或者插入語句(在這篇文章中,隨后我將向大家介紹)。

Listing A中創建了一個表并插入了一些數據,這樣你就可以利用這張表來看看EXISTS結構是如何工作的了。Listing B中的腳本使用EXISTS結構在SalesHistory表中檢查每一行,并根據已存在的行得到一個變量。這個腳本將返回1(真),這意味著SalesHistory表包含你所要查詢的行。

在這種情況下,一旦在SalesHistory表中找到了一條記錄,EXISTS結構就不會繼續查找,并馬上返回1。使用EXISTS結構額外的好處就是,一旦它找到滿足條件的記錄,就會立即返回。

Listing C與上面的腳本類似,但是它的返回值是0,因為在這個條件下,EXISTS條件不滿足。

由于EXISTS結構的工作原理,所以下面的語句所實現的功能是一樣的。


SELECT * FROM SalesHistory

WHERE EXISTS(SELECT NULL)

SELECT * FROM SalesHistory

WHERE 1 = 1

SELECT * FROM SalesHistory

WHERE EXISTS(SELECT 1)

在剛才的腳本中,你可能會對下面的語句感到迷惑:

SELECT * FROM SalesHistory

WHERE EXISTS(SELECT NULL)
 

因為NULL在數據庫中是一個值(它是一個未知的值),在出現NULL值的地方EXISTS結構都將返回真。

開發者很少使用EXISTS對子查詢進行操作。下面的查詢將返回同樣的結果集,雖然它們的結構不同。第一個查詢使用了EXISTS的相關子查詢,第二查詢在SalesHistory表中,將SalePrice字段與該字段的總平均值進行比較。


SELECT * FROM SalesHistory sh

WHERE EXISTS

(
SELECT AVG(SalePrice)

FROM SalesHistory shi

HAVING AVG(SalePrice) > sh.SalePrice
)
SELECT * FROM SalesHistory sh

WHERE SalePrice <

(
SELECT AVG(SalePrice)

FROM SalesHistory shi
)

你可以使用EXISTS操作來決定,是否對某一個單獨的記錄使用UPDATE或者INSERT語句,就像下面的例子一樣:


IF EXISTS

(

SELECT * FROM SalesHistory

WHERE SaleDate = '1/1/2001' AND

Product = 'Computer' AND

SalePrice = 1000

)

UPDATE TOP(1) SalesHistory

SET SalePrice = 1100

WHERE SaleDate = '1/1/2001' AND

Product = 'Computer' AND

SalePrice = 1000
ELSE
INSERT INTO SalesHistory

(Product, SaleDate, SalePrice)

VALUES

('Computer', '1/1/2001', 1100)
 

雖然在實際的環境中,你可能不會用到這里所介紹的例子,但是它們給你演示了如何利用EXISTS結構來決定使用哪種DML類型。

相信通過上文的學習,現在大家對EXISTS結構也已經有了大體的了解,EXISTS結構的很多好處大家也是都能夠看的見的,下次,當你寫查詢語句的時候,請記住要使用EXISTS結構。它很容易掌握,使用也很方便,并且能在程序中給你提供很多便利。

【編輯推薦】

  1. SQL Server數據庫服務器高性能設置
  2. 測試SQL Server業務規則鏈接方法
  3. 對SQL Server聚集索引的指示綜合描述

 

責任編輯:迎迎 來源: 賽迪網
相關推薦

2010-07-12 13:57:55

SQL Server

2011-03-31 10:52:13

2011-05-12 13:07:28

SQL Server復制漏洞

2012-08-20 09:45:18

SQL Server

2016-03-30 09:58:16

2010-09-24 18:52:53

SQL中NOT EXI

2024-10-17 16:08:36

SQL 查詢SQL

2018-11-02 10:46:08

硬盤SQL ServerIO

2011-04-02 11:28:10

SQL Server數報表數據庫快照

2018-12-25 14:40:04

SQL ServerSQL語句數據庫

2010-07-08 16:44:21

SQL Server索

2010-07-06 10:19:15

SQL Server層

2010-10-21 14:43:46

SQL Server查

2011-08-31 15:21:07

windows7文件夾

2009-10-22 09:52:41

域名郵箱安全

2009-04-16 17:30:00

可伸縮管理集成

2010-07-15 16:42:32

數據庫引擎

2010-07-26 14:02:50

SQL Server臨

2010-09-13 13:19:16

Sql Server分

2010-10-20 11:18:38

sql server復
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩中文在线 | 一区二区三区视频免费观看 | 国产精品视频不卡 | 欧美日韩一 | 青青草原精品99久久精品66 | 亚洲一区二区三区在线 | 成人精品国产免费网站 | 日韩国产在线 | 日韩av在线播 | av在线播放不卡 | 天堂在线www | 亚洲精品国产一区 | 国产ts人妖系列高潮 | 精品免费国产视频 | 中文字幕一区二区三区四区五区 | 欧美日韩国产一区二区三区 | 天天看天天摸天天操 | 91精品国产一区二区三区蜜臀 | 97国产精品视频人人做人人爱 | 粉嫩一区二区三区国产精品 | 成人一区二区在线 | 亚洲高清在线 | 欧美精品一区二区三区在线 | 精久久久 | 国产精品视频在线播放 | 在线看无码的免费网站 | gogo肉体亚洲高清在线视 | 久久av一区 | 国内精品伊人久久久久网站 | 日韩在线视频一区 | 亚洲国产一区二区三区在线观看 | 日日操操| 日韩激情在线 | 亚洲一区二区三区四区在线观看 | 一区二区三区在线观看免费视频 | 成年人网站免费 | 黄色成人在线观看 | 免费高清av | 国产精品一区二区不卡 | 午夜99| 日韩久久中文字幕 |