国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

淺談深入淺出SQL嵌套SELECT語句

2024-08-31 00:46:17
字體:
來源:轉載
供稿:網友

嵌套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')

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贵南县| 姚安县| 屏东县| 东明县| 垫江县| 南郑县| 杨浦区| 湟中县| 茂名市| 东乌珠穆沁旗| 襄城县| 云南省| 华阴市| 平南县| 昂仁县| 泸州市| 溆浦县| 香港 | 门头沟区| 泽州县| 台州市| 克东县| 北票市| 雷波县| 漠河县| 商城县| 海盐县| 酒泉市| 九江县| 油尖旺区| 镇坪县| 宜兰县| 松江区| 义乌市| 新田县| 青田县| 峨眉山市| 大方县| 衡东县| 甘泉县| 浑源县|