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

MySQL之使用WITH子句和臨時表達(dá)式進(jìn)行數(shù)據(jù)分析和篩選方式

 更新時間:2024年04月02日 11:02:50   作者:Hello 阿月  
這篇文章主要介紹了MySQL之使用WITH子句和臨時表達(dá)式進(jìn)行數(shù)據(jù)分析和篩選方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

使用WITH子句和臨時表達(dá)式進(jìn)行數(shù)據(jù)分析和篩選

MySQL支持使用WITH創(chuàng)建臨時表達(dá)式,通常稱為"Common Table Expressions"(CTE)。

CTE 通常用于較復(fù)雜的查詢,為復(fù)雜查詢提供了一種更清晰、模塊化的方式,以提高復(fù)雜查詢的可讀性和易維護(hù)性。

舉個通用的例子

my_cte是一個臨時表達(dá)式,它包含了從my_table中選擇滿足某個條件的列,然后,在查詢的其余部分中引用這個臨時表達(dá)式

WITH my_cte AS (
    SELECT 
        column1,
        column2
    FROM 
        my_table
    WHERE 
        condition
)
SELECT 
    *
FROM 
    my_cte
WHERE 
    column1 > 10;

WITH子句定義的CTE只在查詢執(zhí)行期間存在,不會在數(shù)據(jù)庫中永久存儲。

在使用時,需確保自己的MySQL版本支持WITH語句,因為不同的MySQL版本可能對此支持程度有所不同。

舉個實際的例子

假設(shè)有一個包含員工信息的表employee

CREATE TABLE employee (
    emp_id INT,
    emp_name VARCHAR(50),
    emp_salary DECIMAL(10, 2),
    department_id INT
);

INSERT INTO employee VALUES
(1, 'John Doe', 50000.00, 1),
(2, 'Jane Smith', 60000.00, 2),
(3, 'Bob Johnson', 75000.00, 1),
(4, 'Alice Williams', 80000.00, 2);

現(xiàn)在,需要計算每個部門的平均工資,并只選擇部門平均工資高于整體平均工資的部門員工記錄,可以使用WITH子句來實現(xiàn):

WITH department_avg_salary AS (
    SELECT
        department_id,
        AVG(emp_salary) AS avg_salary
    FROM
        employee
    GROUP BY
        department_id
)
SELECT
    e.emp_id,
    e.emp_name,
    e.emp_salary,
    e.department_id
FROM
    employee e
JOIN
    department_avg_salary d ON e.department_id = d.department_id
WHERE
    d.avg_salary > (SELECT AVG(emp_salary) FROM employee);

在上述例子中,department_avg_salary是一個CTE,它計算每個部門的平均工資。

然后,通過JOINemployee表與這個臨時表連接,并在最后的WHERE子句中過濾出部門平均工資高于整體平均工資的記錄,輸出結(jié)果將是符合條件的員工記錄

+--------+----------------+------------+---------------+
| emp_id | emp_name       | emp_salary | department_id |
+--------+----------------+------------+---------------+
|      3 | Bob Johnson    |   75000.00 |             1 |
|      4 | Alice Williams |   80000.00 |             2 |
+--------+----------------+------------+---------------+

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Navicat for MySQL定時備份數(shù)據(jù)庫及數(shù)據(jù)恢復(fù)詳解

    Navicat for MySQL定時備份數(shù)據(jù)庫及數(shù)據(jù)恢復(fù)詳解

    這篇文章主要介紹了Navicat for MySQL定時備份數(shù)據(jù)庫及數(shù)據(jù)恢復(fù)的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • mysql模糊查詢like與REGEXP的使用詳細(xì)介紹

    mysql模糊查詢like與REGEXP的使用詳細(xì)介紹

    每位程序員們應(yīng)該都知道,增刪改查是mysql最基本的功能,而其中查是最頻繁的操作,模糊查找是查詢中非常常見的操作,于是模糊查找成了必修課。下面這篇文章就給大家詳細(xì)介紹了mysql模糊查詢like與REGEXP的使用,有需要的朋友們可以參考學(xué)習(xí)。
    2016-12-12
  • mysql myisam 優(yōu)化設(shè)置設(shè)置

    mysql myisam 優(yōu)化設(shè)置設(shè)置

    mysql myisam 優(yōu)化設(shè)置設(shè)置,需要的朋友可以參考下。
    2010-03-03
  • Mysql提權(quán)的多種姿勢匯總

    Mysql提權(quán)的多種姿勢匯總

    這篇文章主要給大家介紹了關(guān)于Mysql提權(quán)的多種姿勢,姿勢包括寫入Webshell、UDF提權(quán)以及MOF提權(quán),文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • MySQL5.7.20解壓版安裝和修改root密碼的教程

    MySQL5.7.20解壓版安裝和修改root密碼的教程

    這篇文章主要介紹了MySQL5.7.20解壓版安裝和修改root密碼的教程,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-04-04
  • 線上MYSQL同步報錯故障處理方法總結(jié)(必看篇)

    線上MYSQL同步報錯故障處理方法總結(jié)(必看篇)

    下面小編就為大家?guī)硪黄€上MYSQL同步報錯故障處理方法總結(jié)(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • MySQL虛擬列的具體使用

    MySQL虛擬列的具體使用

    虛擬列是一種特殊類型的表列,它不像普通列直接存儲數(shù)據(jù),而是根據(jù)其他列中的數(shù)據(jù)動態(tài)生成,本文主要介紹了MySQL虛擬列的具體使用,感興趣的可以了解一下
    2024-09-09
  • redhat 5.4下安裝MYSQL全過程

    redhat 5.4下安裝MYSQL全過程

    自己需要的是用JAVA環(huán)境而不是用php+apache這種一鍵安裝的東西,所以果斷自己來安裝自己想要的東西了,下面與大家分享下redhat 5.4下安裝MYSQL全過程,感興趣的朋友可以參考下哈
    2013-06-06
  • MySL實現(xiàn)如等級成色等特殊順序的排序詳解

    MySL實現(xiàn)如等級成色等特殊順序的排序詳解

    這篇文章主要為大家介紹了MySL實現(xiàn)如等級成色等特殊順序的排序詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 解決mysql數(shù)據(jù)庫數(shù)據(jù)遷移達(dá)夢數(shù)據(jù)亂碼問題

    解決mysql數(shù)據(jù)庫數(shù)據(jù)遷移達(dá)夢數(shù)據(jù)亂碼問題

    最近接手一個java項目,需要進(jìn)行重構(gòu),使用國產(chǎn)數(shù)據(jù)庫達(dá)夢8替換mysql數(shù)據(jù)庫需要滿足這個要求,在遷移過程中遇到mysql數(shù)據(jù)庫數(shù)據(jù)遷移達(dá)夢數(shù)據(jù)亂碼問題,怎么解決呢,下面把過程分享給大家一起看看吧
    2021-08-08

最新評論