MySQL公共表達式簡介
MySQL公共表達式(Common Table Expression,CTE)是一種在查詢中定義臨時結(jié)果集的方式。它能夠提高查詢的可讀性和重用性。
使用公共表達式的好處
使用公共表達式可以避免嵌套查詢(Nested Query),提高查詢的可讀性和可維護性。同時,公共表達式也可以在多個查詢中復(fù)用,避免了代碼的重復(fù)。
公共表達式的語法
公共表達式的語法如下:
WITH
表達式1 AS (
SELECT ...
),
表達式2 AS (
SELECT ...
)
SELECT ...
在WITH語句中,可以定義多個公共表達式,每個表達式以“,”分割。每個公共表達式由一個表名和SQL語句組成。該SQL語句可以是SELECT、INSERT、UPDATE、DELETE等任意一種SQL語句。
使用公共表達式的示例
以下是一個使用公共表達式的示例:
WITH
dept_count AS (
SELECT dept_name, COUNT(*) AS num
FROM employee
GROUP BY dept_name
),
salary_avg AS (
SELECT dept_name, AVG(salary) AS avg_salary
FROM employee
GROUP BY dept_name
)
SELECT dept_count.dept_name, dept_count.num, salary_avg.avg_salary
FROM dept_count
INNER JOIN salary_avg ON dept_count.dept_name=salary_avg.dept_name
這段代碼定義了兩個公共表達式dept_count和salary_avg。dept_count統(tǒng)計員工人數(shù),salary_avg統(tǒng)計薪資平均值。在最外層SELECT語句中,使用INNER JOIN將兩個公共表達式連接起來,查詢出每個部門的員工人數(shù)和薪資平均值。