前端學資料庫之子查詢

来源:http://www.cnblogs.com/xiaohuochai/archive/2016/11/18/6077677.html
-Advertisement-
Play Games

[1]定義 [2]比較運算符 [3]修飾關鍵字 [4][NOT]IN [5]存儲查詢結果 ...


×
目錄
[1]定義 [2]比較運算符 [3]修飾關鍵字[4][NOT]IN[5]存儲查詢結果

前面的話

  查詢資料庫,當查詢條件比較複雜時,常常需要用到子查詢。子查詢(Subquery)是指出現在其他SQL語句內的SELECT子句。本文將詳細介紹子查詢

 

定義

  子查詢(Subquery)是指出現在其他SQL語句內的SELECT子句

SELECT * FROM t1 WHERE col1 = (SELECT col2 FROM t2);

  其中,SELECT * FROM t1,稱為外層查詢(Outer Query/Outer Statement),SELECT col2 FROM t2,稱為子查詢(SubQuery)

  在使用子查詢時,需要註意的是

  1、子查詢指嵌套在查詢內部,且必須始終出現在圓括弧內

  2、子查詢語句中可以包含多個關鍵字或條件,如DISTINCT、GROUP BY、ORDER BY、LIMIT、函數等

  3、子查詢的外層查詢可以是:SELECT、INSERT、UPDATE、SET或DO

  4、子查詢可以返回值:標量、一行、一列或者子查詢

 

比較運算符

  使用比較符是其中一類子查詢

operand comparison_operator subquery

  比較運算符包括=、!=、<>、<=> 、>、<、>=、<=

數據準備

  下載數據文件,建立資料庫,數據表,並存入相應記錄

  求所有電腦產品的平均價格,並且保留兩位小數,AVG、MAX、MIN、COUNT、SUM為聚合函數

  [註意]AVG()是一個用來求平均值的函數

  查詢所有價格大於平均價格的商品

SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price > 5391.30;

  通過子查詢來實現相同的需求

SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price > (SELECT ROUND(AVG(goods_price),2) FROM tdb_goods);

  查詢類型為“超記本”的商品價格

  查詢價格大於或等於"超級本"價格的商品

  系統提示錯誤,子查詢返回的多於一行,因為子查詢有3條結果,SELECT無法知道要大於子查詢中3條結果中的哪一個。所以,這時就需要用到接下來要介紹的修飾關鍵字

 

修飾關鍵字

  修飾關鍵字包括ANY、some、all三個,如果子查詢返回多個值時,可以使用它們

operand comparison_operator  ANY(子查詢)
operand comparison_operator  SOME(子查詢)
operand comparison_operator  ALL(子查詢)

情況處理

  1、運算符為>或>=,使用ANY關鍵字時,表示大於子查詢結果中的最小值

SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price >  ANY (SELECT goods_price FROM tdb_goods WHERE goods_cate = '超級本');

  由結果可知,返回的都大於4299的值,即最小值

  2、運算符為>或>=,使用ALL關鍵字時,表示大於子查詢結果中的最大值

  3、運算符為<或<=,使用ANY或SOME關鍵字時,表示小於子查詢結果中的最大值;使用ALL關鍵字時,表示小於子查詢結果中的最小值

  4、運算符為=,使用ANY或SOME關鍵字時,表示等於子查詢結果中的任意值;使用ALL關鍵字時,則返回空

 

[NOT]IN

operand comparison_operator [NOT] IN (subquery)

  第二種子查詢是由IN 或 NOT IN引發的子查詢,與比較運算符使用的方法基本相同 

其中,= ANY 運算符與 IN 等效,!= ALL或 <> ALL運算符與 NOT IN 等效

[NOT] EXISTS

  第三種子查詢是由EXISTS 或 NOT EXISTS引發的子查詢。如果子查詢返回任何行,EXISTS將返回TRUE;否則返回FALSE

 

存儲查詢結果

  我們可以把查詢結果統一存儲到一個新的數據表中,而不需要一條一條地錄入

  下麵,先創建一個“商品分類”空表

   然後,查詢tdb_goods表的所有記錄,並且按"類別"分組

  將分組結果寫入到“商品分類”數據表中

INSERT [INTO] tbl_name [(col_name),...)] SELECT...;

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • HTML5頁面的圖片上傳功能在iOS端的實現。 首先,頁面上用的是plupload組件,在wkwebview上存在兩個坑需要修複才能正常使用。 問題:在webview上點擊選擇照片/相機拍攝,就會出現whose view is not in the window hierarchy這個錯誤。其實st ...
  • //按鈕出現時的動畫效果 + (void)buttonAnimation:(UIButton *)sender { CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; CA ...
  • Base項目是在Xcode7上創建的,升級Xcode8以後,編譯時候提示錯誤: The file “base.app” couldn’t be opened because you don’t have permission to view it. 應該是由於Build Settings->Buil ...
  • AysncTask相信大家都不陌生,它是為了簡化非同步請求、更新UI操作而誕生的。使用它不僅可以完成我們的網路耗時操作,而且還可以在完成耗時操作後直接的更新我們所需要的UI組件。這使得它在android開發中成為炙手可熱的網路請求工具類。 ...
  • 使用rpm包安裝xtrabackup 為備份操作創建MySQL賬戶。 ## xtrabackup備份創建備份用戶CREATE USER 'backuper'@'localhost' IDENTIFIED BY 'backup@123';GRANT SELECT, RELOAD, PROCESS, S ...
  • 因近期需要進行sqlserver數據到mysql之間的數據同步。偶然之間發現了這一款工具ELK 一、下載 1、Kettle可以在http://kettle.pentaho.org/網站下載 2、下載的文件是一個壓縮包隨便放在win下都可以解壓後文件如下 二、啟動註意事項 1、由於工具需要安裝java ...
  • 寫這篇文章,是因為最近遇到了mapreduce的二次排序問題。以前的理解不完全正確。首先看一下mapreduce的過程 相信這張圖熟悉MR的人都應該見過,再來一張圖 wordcount也不細說了,hadoop裡面的hello,world 之前我的理解是map過來的<k,v>會形成(k,<v1,v2, ...
  • 在Linux下安裝Postgresql有二進位格式安裝和源碼安裝兩種安裝方式,這裡用的是二進位格式安裝。各個版本的Linux都內置了Postgresql,所以可直接通過命令行安裝便可。本文用的是Centos6.5。 安裝Postgresql # 安裝postgresql伺服器 yum install... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...