SQL 語法 With As 前幾天在維護專案的時候,看到有使用 With As 的語法,覺得很特別,今天紀錄一下
我們程式要從資料庫撈出來的資料,可能不是直接從某張 Table 出來的。例如需要過濾條件、或是預處理過才是我們要的資料。你可能會想使用暫存資料表,不過今天你可以用試用 Common Table Expressions (通用資料表運算式),把資料做預先處理,再從裡面進行查詢。
在 SQL Server 中語法是
with 名稱 as
(
select .....
)
select * From 名稱
With
一定是你下的SQL語法開頭,而 With as ()
的括號後面一定要馬上接 Selcet
1.基本用法
With MyData as (
Select [ProductName],[UnitPrice]
From [Products]
Where ProductID > 10
)
Select * From MyData
where [UnitPrice] >10
Order by UnitPrice
With MyData(產品名稱,價格) as (
Select [ProductName],[UnitPrice]
From [Products]
Where ProductID > 10
)
Select * From MyData
where 價格 >10
Order by 價格
3. with 多組 CTE
With
小於五元 as (
Select [ProductName],[UnitPrice]
From [Products]
Where [UnitPrice] < 5
),
大於二十元 as (
Select [ProductName],[UnitPrice]
From [Products]
Where [UnitPrice] > 20
)
Select * From 小於五元
UNION ALL
Select * From 大於二十元
Order by UnitPrice
參考資料
https://learn.microsoft.com/zh-tw/sql/t-sql/queries/with-common-table-expression-transact-sql?view=sql-server-ver16
https://dotblogs.com.tw/dc690216/2010/02/02/13440