1. 程式人生 > >【資料庫】——having和where的區別

【資料庫】——having和where的區別

    各種資料庫空白點,各種補,各種基礎走起微笑

前提

    本文主要講解having和where在資料庫使用中有什麼不同之處,學習本文的前提,需要先搞懂資料庫語句的執行順序。

使用場景不同

    where可以用於select、update、delete和insert...into語句中。
     having只能用於select語句中
 

子句有區別

where子句

     where子句中的條件表示式having都可以跟,而having子句中的有些表示式where不可以跟;having子句可以用聚合函式(sum、count、avg、max和min),而where子句不可以。

having子句

    HAVING是先分組再篩選記錄,WHERE在聚合前先篩選記錄.也就是說作用在GROUPBY 子句和HAVING子句前;而 HAVING子句在聚合後對組記錄進行篩選。

作用物件不同 

    作用的物件不同。WHERE子句作用於表和檢視,HAVING 子句作用於組。WHERE在分組和聚集計算之前選取輸入行(因此,它控制哪些行進入聚集計算),而 HAVING在分組和聚集之後選取分組的行。因此,WHERE 子句不能包含聚集函式;因為試圖用聚集函式判斷那些行輸入給聚集運算是沒有意義的。 相反,HAVING子句總是包含聚集函式。(嚴格說來,你可以寫不使用聚集的 HAVING 子句, 但這樣做只是白費勁。同樣的條件可以更有效地用於 WHERE 階段。)

總結

    想要真正用好一樣工具,這些基礎才是根本,不會走,怎麼能會跑;不會基礎,怎知道該怎樣優化。本文的內容還主要些理論東西,想要真正的掌握還必須是自己動手去聯絡啊。

PS:小編提個問題,本文多次涉及一個詞語聚集函式,能說出什麼是聚集函式,還有哪些函式是聚集函式。

相關推薦

資料庫——havingwhere區別

    各種資料庫空白點,各種補,各種基礎走起 前提     本文主要講解having和where在資料庫使用中有什麼不同之處,學習本文的前提,需要先搞懂資料庫語句的執行順序。 使用場景不

轉載shardingpartition區別

spl break iss sys div ica dividing shard ati Partitioning is a general term used to describe the act of breaking up your logical dat

06volatile synchronized 區別

synchronized 同步,解決多執行緒 訪問臨界區的問題,作用於例項 ,但是 修飾 static 方法 是 作用.class 鎖 volatile 變數的執行緒可見,換句不太恰當的話,就是扔在了執行緒棧外(共享區域)   volatile 例項1,這裡有個坑 while(flag)&nb

轉載LinkedHashMapHashMap區別

HashMap,LinkedHashMap,TreeMap都屬於Map Map 主要用於儲存鍵(key)值(value)對,根據鍵得到值,因此鍵不允許鍵重複,但允許值重複。 HashMap 是一個最常用的Map,它根據鍵的HashCode 值儲存資料,根據鍵可以直接獲取它的值,具有很

linuxchwonchmod區別

chown用法 用來更改某個目錄或檔案的使用者名稱和使用者組的 chown 使用者名稱:組名 檔案路徑(可以是就對路徑也可以是相對路徑) 例1:chown root:root /tmp/tmp1 就是把tmp下的tmp1的使用者名稱和使用者組改成root和root(只修改了

C++(++a)(a++)區別解讀

簡介code&result1 簡介 ++a和a++,都是個表示式,最後的結果就取決於是先加,還是後加;如果是先加,那麼最後的表示式的結果就是a的值加1;如果是後加的話,則表示式的值就是原來a

面試ForwordSendRedirect區別

 Forword:僅是容器中控制權的轉向,在客戶端瀏覽器位址列中不會顯示出轉向後的地址; SendRedirect:則是完全的跳轉,瀏覽器將會得到跳轉的地址,並重新發送請求連結。這樣,從瀏覽器的位址列

DataBase-group by, having where 區別

group by作用 在select 語句中可以使用group by 子句將行劃分成較小的組,一旦使用分組後select操作的物件變為各個分組後的資料,使用聚組函式返回的是每一個組的彙總資訊。 having和where區別 當在gropu by 子句中使用

havingwhere區別

字段 錯誤 沒有 avi 語句 font count price () 區別: where:語句條件字段,必須是“數據表中存在的”字段 having:語句條件字段 必須是查詢結果集中存在的字段 having()設置sql語句查詢條件 group by 就使用havin

httppostget請求的區別

方式 無限制 信息 資源 敏感信息 字符 瀏覽器歷史記錄 指定 較差 兩種常用的HTTP請求方式:post和get get:從指定的資源進行請求。數據長度有限制(2048個字符)可被緩存、可被保留在瀏覽器歷史記錄中,安全性較差。發送敏感信息如密碼時不適用。 post

VPS獨立服務器有什麽區別

驅動精靈 數據 基本 運行 mysq 測試軟件 大致 服務 進程 現在有不少空間商以次充好,而有不少客戶對服務器和vps分辨不清,導致不少客戶利益蒙受損失,本文這裏大致說一下怎麽區分獨立服務器和vps?  首先先大致說下vps和服務器分別的特點:    1、VPS:共享內存

轉載ASPASP.NET根本區別

離開 事件 更強 href 都在 框架 簡單 sha 提高 ASP.NET和ASP的最大區別在於編程思維的轉換,而不僅僅在於功能的增強。ASP使用VBS/JS這樣的腳本語言混合html來編程,而那些腳本語言屬於弱類型、面向結構的編程語言,而非面向對象,這就明顯產生以下幾個問

typedef#define的用法與區別

++ 說明 運算符 lan body 精度 標識 gpo 幫助 typedef和#define的用法與區別 一、typedef的用法   在C/C++語言中,typedef常用來定義一個標識符及關鍵字的別名,它是語言編譯過程的一部分,但它並不實際分配內存空間,實例像:

JavaComparableComparator接口的區別

包含 第一個 入參 pareto blog 等於 compare 排序。 tor   Java提供了只包含一個compareTo()方法的Comparable接口。這個方法可以個給兩個對象排序。具體來說,它返回負數,0,正數來表明已經存在的對象小於,等於,大於輸入對象。  

轉載CentOSUbuntu的區別

源代碼 自由 賬戶 pri 格式 編譯 一個 arc nom CentOS(Community ENTerprise Operating System)是Linux發行版之一,它是來自於Red Hat Enterprise Linux依照開放源代碼規

having where區別

ont price ood 統計函數 mil 數據表 -o pan 不能 區別1 where是從數據表中的字段直接進行的篩選的。 having是從 前面篩選的字段再篩選 eg: select goods_price,goods_name from goods hav

having where區別

having 關鍵字 可以接聚合函式 出現在分組(group by)之後(只能在分組之後用) where 關鍵字 它是不可以接聚合函式,出現在分組之前 --都是做條件的過濾 根據no分組。分組後統計每組商品的平均價格 並且價格>60 select no,avg(pric

SOA微服務的區別

目錄   1、什麼是SOA   2. 什麼是微服務 3. 微服務由來 4. 為什麼需要微服務? 4.1 最期的單體架構帶來的問題 4.2 微服務與單體架構區別 4.3 微服務與SOA區別 5. 微服務本質 6.什麼樣的專案適合微服務 微服務優勢與

JSsubstringsubstr的區別

語法: stringObject.substr(start,length) stringObject.substring(start,stop)       var mystr = 'abcdefg';        co

資料庫關於日期的處理(以greenplumpostgresqlhive為例)

那個啥,本人菜鳥一隻,如果有什麼說錯的地方還請大家批評指出!! 好,開始說正事,日期處理和判斷是十分常見的,本文就自己使用的資料庫,和hive資料倉庫來說說,我使用到的一些日期的處理和判斷,當然技術能力有限,我也很菜,所以如果有說錯或者遺漏的還請大家多多包涵,望能批評指出,也讓我的水平提高提高!