Lyn*_*ler 2 sql t-sql sql-server-2005 subquery where-clause
研究员,我的查询如下:
SELECT A.ID, B.ID, (HUGE SUBQUERY) as HS
FROM TABLE_A JOIN TABLE_B ON A.ID = B.ID
WHERE (HUGE SUBQUERY) > 0
Run Code Online (Sandbox Code Playgroud)
我想避免重复子查询.有没有办法像我这样重写我的WHERE
WHERE HS > 0
Run Code Online (Sandbox Code Playgroud)
或者我必须将子查询转换为连接?
看看With子句:
WITH HS AS (Huge subquery)
SELECT A.ID, B.ID, HS
FROM TABLE_A JOIN TABLE_B ON A.ID = B.ID
WHERE HS > 0
Run Code Online (Sandbox Code Playgroud)
要么
SELECT *
FROM
(
SELECT A.ID, B.ID, (HUGE SUBQUERY) as HS
FROM TABLE_A JOIN TABLE_B ON A.ID = B.ID
)
WHERE HS > 0
Run Code Online (Sandbox Code Playgroud)
您可以使用CTE:
WITH cteHS AS (
SELECT xxx AS Value
FROM Huge Subquery
)
SELECT A.ID, B.ID, cteHS.Value as HS
FROM TABLE_A, cteHS
JOIN TABLE_B ON A.ID = B.ID
WHERE cteHS.Value > 0
Run Code Online (Sandbox Code Playgroud)