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

首頁 > 開發 > 綜合 > 正文

深入淺出SQL教程之嵌套SELECT語句

2024-07-21 02:31:53
字體:
來源:轉載
供稿:網友

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

OK,

  讓我們再看看一些具體的實例,

  一、給出人口多于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')


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南木林县| 波密县| 汾阳市| 香河县| 仙桃市| 金川县| 栾川县| 怀宁县| 太谷县| 贵阳市| 苏尼特右旗| 剑河县| 翁源县| 波密县| 赤水市| 湛江市| 长岭县| 晋江市| 睢宁县| 松江区| 西青区| 麻城市| 达拉特旗| 精河县| 菏泽市| 莎车县| 桃江县| 喀什市| 佳木斯市| 黄冈市| 方正县| 伊春市| 公安县| 乡城县| 荔波县| 云霄县| 合江县| 高平市| 辉县市| 新野县| 江北区|