欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一. 簡介

where

對查詢數(shù)據(jù)進行過濾

having

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

二. 用法

where

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

having

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

三.區(qū)別

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

where是數(shù)據(jù)從磁盤讀入內(nèi)存的時候進行判斷,【數(shù)據(jù)分組前進行過濾】

而having是磁盤讀入內(nèi)存后再判斷?!緦Ψ纸M之后的數(shù)據(jù)再進行過濾】

所以:使用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能夠使用聚合函數(shù)當(dāng)做條件,但是where不能使用,where只能使用存在的列當(dāng)做條件

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

注意:能用where就用where

5. 多表關(guān)聯(lián)查詢時,where先篩選再聯(lián)接,having先聯(lián)接再篩選

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

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的客戶及其訂單總金額:(先聯(lián)表,基于分組后的聚合結(jié)果來過濾)

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;

總結(jié)

  • where子句在數(shù)據(jù)被聯(lián)接和分組之前應(yīng)用,用于過濾行
  • having子句在數(shù)據(jù)被聯(lián)接、分組和聚合之后應(yīng)用,用于過濾分組

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

相關(guān)文章

  • 查詢MySQL安裝路徑的兩種方法

    查詢MySQL安裝路徑的兩種方法

    這篇文章主要給大家介紹了關(guān)于查詢MySQL安裝路徑的兩種方法,在使用MySQL時有時需要知道MySQL的安裝路徑才能進行相關(guān)操作,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • MySQL之權(quán)限以及設(shè)計數(shù)據(jù)庫案例講解

    MySQL之權(quán)限以及設(shè)計數(shù)據(jù)庫案例講解

    這篇文章主要介紹了MySQL之權(quán)限以及設(shè)計數(shù)據(jù)庫案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • mysql8.0?lower_case_table_names?大小寫敏感設(shè)置問題解決

    mysql8.0?lower_case_table_names?大小寫敏感設(shè)置問題解決

    在默認情況下,這個變量是設(shè)置為0的,以保持向前兼容性,如果將該變量設(shè)置為1,則表名和數(shù)據(jù)庫名將被區(qū)分大小寫,本文主要介紹了mysql8.0?lower_case_table_names?大小寫敏感設(shè)置問題解決,感興趣的可以了解一下
    2023-09-09
  • MySQL雙主搭建+keepalived高可用的實現(xiàn)

    MySQL雙主搭建+keepalived高可用的實現(xiàn)

    本文主要介紹了MySQL雙主搭建+keepalived高可用的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • 詳解mysql中的concat相關(guān)函數(shù)

    詳解mysql中的concat相關(guān)函數(shù)

    這篇文章主要介紹了mysql中的concat相關(guān)函數(shù),本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • 詳解MySQL中的NULL值

    詳解MySQL中的NULL值

    這篇文章主要介紹了MySQL中的NULL值的相關(guān)知識,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • MySQL使用binlog日志恢復(fù)數(shù)據(jù)的方法步驟

    MySQL使用binlog日志恢復(fù)數(shù)據(jù)的方法步驟

    binlog日志是用于記錄所有修改數(shù)據(jù)庫內(nèi)容的操作,本文主要介紹了MySQL使用binlog日志恢復(fù)數(shù)據(jù)的方法步驟,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • MYSQL大數(shù)據(jù)導(dǎo)入

    MYSQL大數(shù)據(jù)導(dǎo)入

    MYSQL大數(shù)據(jù)導(dǎo)入...
    2006-11-11
  • MySQL操作數(shù)據(jù)庫實戰(zhàn)指南

    MySQL操作數(shù)據(jù)庫實戰(zhàn)指南

    這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫操作庫的相關(guān)資料,MySQL數(shù)據(jù)庫是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),所采用的SQL語言是用于訪問數(shù)據(jù)庫最常用的標準會語言,需要的朋友可以參考下
    2023-07-07
  • Mysql?InnoDB聚簇索引二級索引聯(lián)合索引特點

    Mysql?InnoDB聚簇索引二級索引聯(lián)合索引特點

    這篇文章主要為大家介紹了Mysql?InnoDB聚簇索引二級索引聯(lián)合索引特點詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05

最新評論