最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql中having與where的區(qū)別小結

 更新時間:2025年03月04日 10:30:35   作者:李若盛開  
本文主要介紹了MySQL中WHERE和HAVING子句的區(qū)別,包括它們的執(zhí)行順序、效率、適用條件和在多表關聯查詢中的應用,具有一定的參考價值,感興趣的可以了解一下

一. 簡介

where

對查詢數據進行過濾

having

用于對已分組的數據進行過濾【having和group by 必須配合使用(有having必須出現group by)】

二. 用法

where

select * from table where sum(字段)>100

having

select * from table group by 字段 having 字段>10

三.區(qū)別

1. 被執(zhí)行的數據來源不同

where是數據從磁盤讀入內存的時候進行判斷,【數據分組前進行過濾】

而having是磁盤讀入內存后再判斷?!緦Ψ纸M之后的數據再進行過濾】

所以:使用where比用having效率要高很多。

2. 執(zhí)行順序不一樣

Where>Group By>Having

MySQL解釋sql語言時的執(zhí)行順序:

SELECT
DISTINCT <select_list>
FROM <left_table>
<join_type> JOIN <right_table>
ON <join_condition><strong>
WHERE</strong> <where_condition>
GROUP BY <group_by_list><strong>
HAVING</strong> <having_condition>
ORDER BY <order_by_condition>
LIMIT <limit_number>

3. where不可以使用字段的別名,但是having可以

select name as aa from student where aa > 100 (錯誤)
select name as aa from student group name having  aa > 100 (正確)

4. having能夠使用聚合函數當做條件,但是where不能使用,where只能使用存在的列當做條件

select  *  as aa from student where count(*) > 1 (錯誤)
select *  from student group name having  count(name) > 1 (正確)

注意:能用where就用where

5. 多表關聯查詢時,where先篩選再聯接,having先聯接再篩選

找出所有在'IT'部門且薪水高于10000的員工:(在聯接之前先進行了篩選)

SELECT e.employee_name, d.department_name  
FROM employees e  
JOIN departments d ON e.department_id = d.department_id  
WHERE e.salary > 10000 AND d.department_name = 'IT';

找出每個客戶下訂單的總金額超過1000的客戶及其訂單總金額:(先聯表,基于分組后的聚合結果來過濾)

SELECT c.customer_name, SUM(o.order_amount) AS total_amount  
FROM customers c  
JOIN orders o ON c.customer_id = o.customer_id  
GROUP BY c.customer_name  
HAVING SUM(o.order_amount) > 1000;

總結

  • where子句在數據被聯接和分組之前應用,用于過濾行
  • having子句在數據被聯接、分組和聚合之后應用,用于過濾分組

到此這篇關于Mysql中having與where的區(qū)別小結的文章就介紹到這了,更多相關Mysql having與where區(qū)別內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • Linux環(huán)境下設置MySQL表名忽略大小寫的方法小結

    Linux環(huán)境下設置MySQL表名忽略大小寫的方法小結

    在MySQL中,表名的大小寫敏感性取決于操作系統(tǒng)和MySQL的配置,在Unix/Linux系統(tǒng)上,表名通常是區(qū)分大小寫的,由于之前MySQL未設置忽略表名大小寫導致數據查詢失敗等問題,所以本文給大家介紹了Linux環(huán)境下設置MySQL表名忽略大小寫的方法,需要的朋友可以參考下
    2024-06-06
  • Mysql學習筆記之存儲過程與存儲函數示例詳解

    Mysql學習筆記之存儲過程與存儲函數示例詳解

    MySQL存儲過程是一種在MySQL數據庫中存儲的預編譯SQL代碼塊,它可以接受參數并執(zhí)行一系列SQL操作,這篇文章主要介紹了Mysql學習筆記之存儲過程與存儲函數的相關資料,需要的朋友可以參考下
    2025-08-08
  • 淺析mysql 語句的調度優(yōu)先級及改變

    淺析mysql 語句的調度優(yōu)先級及改變

    本篇文章是對mysql語句的調度優(yōu)先級及改變進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • mysql 5.7.15版本安裝配置方法圖文教程

    mysql 5.7.15版本安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了mysql 5.7.15安裝配置方法圖文教程,更改數據庫data的存儲路徑,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • MySQL復合查詢和表的內外連接示例詳解

    MySQL復合查詢和表的內外連接示例詳解

    在數據庫管理和數據分析中,單表查詢往往無法滿足復雜的數據查詢需求,因此多表查詢和子查詢成為了解決問題的關鍵技術,MySQL支持多種多表查詢方式,如內連接、外連接(左外連接和右外連接)以及自連接,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-10-10
  • MySQL怎么實現原子性的流程詳解(以UPDATE為例)

    MySQL怎么實現原子性的流程詳解(以UPDATE為例)

    原子性是事務的其中一個特性,指的是要么全部執(zhí)行完,要么全都不執(zhí)行,這篇文章主要介紹了MySQL怎么實現原子性(以UPDATE為例)的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-08-08
  • Mysql動態(tài)更新數據庫腳本的示例講解

    Mysql動態(tài)更新數據庫腳本的示例講解

    今天小編就為大家分享一篇關于Mysql動態(tài)更新數據庫腳本的示例講解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • mysql查看連接數和設置會話超時問題

    mysql查看連接數和設置會話超時問題

    這篇文章主要介紹了mysql查看連接數和設置會話超時問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • MySQL常用命令速查之新手必備的20個高頻操作

    MySQL常用命令速查之新手必備的20個高頻操作

    MySQL命令是用于與MySQL數據庫進行交互和操作的命令,這篇文章主要介紹了MySQL常用命令速查之新手必備的20個高頻操作,文中通過代碼就介紹的非常詳細,需要的朋友可以參考下
    2025-12-12
  • kali虛擬機mysql修改綁定ip的問題

    kali虛擬機mysql修改綁定ip的問題

    這篇文章主要介紹了kali虛擬機mysql修改綁定ip,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06

最新評論

青岛市| 鸡西市| 梅州市| 苍山县| 平远县| 罗江县| 河池市| 宁远县| 南康市| 达孜县| 丁青县| 宁强县| 越西县| 勐海县| 邯郸市| 江达县| 临沭县| 南皮县| 木兰县| 益阳市| 藁城市| 礼泉县| 通榆县| 崇仁县| 武宁县| 资阳市| 宁晋县| 千阳县| 信丰县| 高平市| 高青县| 昭觉县| 响水县| 六盘水市| 邵东县| 和林格尔县| 白玉县| 康马县| 张家口市| 万全县| 瓦房店市|