程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL循序漸進(21)更多的子查詢

SQL循序漸進(21)更多的子查詢

編輯:關於SqlServer

更多的子查詢

我們可以使用在SELECT查詢語句中再包括一個SELECT子查詢語句。舉個例子吧,首先我們列除所有購買貴重物品的顧客,貴重物品的標准是比所有賣出的物品價錢的平均值多100元的物品。具體語句如下:

SELECT OWNERID

FROM ANTIQUES

WHERE PRICE >

(SELECT AVG(PRICE) + 100

FROM ANTIQUES);

上面子查詢語句是計算物品的平均價格再加100元,並搜索所有在ANTIQUES表中PRICE大於這個數值的OWNERID。這裡你可以使用DISTINCT OWNERID來排除復制的現象。

下面的語句列出了所有在AntiqueOwners表中的有買過物品的人的LastName:

SELECT OWNERLASTNAME

FROM ANTIQUEOWNERS

WHERE OWNERID =


(SELECT DISTINCT BUYERID

FROM ANTIQUES);

這個子查詢返回了一系列的顧客,當且僅當物品擁有者的ID出現在子查詢的列表中,古董的擁有者的LastName才會顯示出來。

為了更新這個例子,我們假設有一個買過bookcase的顧客,他的FirstName在數據庫中出錯了,應該為John:

UPDATE ANTIQUEOWNERS

SET OWNERFIRSTNAME = 'John'

WHERE OWNERID =


(SELECT BUYERID

FROM ANTIQUES

WHERE ITEM = 'Bookcase');

上面的語句中的子查詢首先搜索買過bookcase的顧客的BuyerID,然後在外層的查詢中來更新他的FirstName。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved