在SQL查询中,经常会遇到需要重复使用的子查询。为了简化查询语句并提高可读性,SQL引入了WITH AS语法。通过使用WITH AS,我们可以创建临时表或视图,将子查询的结果保存起来,并在主查询中使用。本文将通过示例介绍SQL中WITH AS的特点,展示其在查询中的优势。
WITH 临时表名 AS (
-- 定义临时表的查询
SELECT ... FROM ...
)
-- 主查询(使用临时表)
SELECT * FROM 临时表名;
假设有一个订单表 orders
,需要统计每个用户的订单总金额,并筛选出金额超过 1000 的用户:
WITH user_total AS (
SELECT user_id, SUM(amount) AS total
FROM orders
GROUP BY user_id
)
SELECT user_id, total
FROM user_total
WHERE total > 1000;
定义多个 临时表
WITH
cte1 AS (SELECT ... FROM ...),
cte2 AS (SELECT ... FROM cte1 WHERE ...)
SELECT * FROM cte2;