研究員, 我有一個查詢,如下所示:避免子查詢
SELECT A.ID, B.ID, (HUGE SUBQUERY) as HS
FROM TABLE_A JOIN TABLE_B ON A.ID = B.ID
WHERE (HUGE SUBQUERY) > 0
我想避免重複子查詢。 有什麼辦法重寫我何至於像
WHERE HS > 0
或者,我必須把我的子查詢轉換爲連接?
研究員, 我有一個查詢,如下所示:避免子查詢
SELECT A.ID, B.ID, (HUGE SUBQUERY) as HS
FROM TABLE_A JOIN TABLE_B ON A.ID = B.ID
WHERE (HUGE SUBQUERY) > 0
我想避免重複子查詢。 有什麼辦法重寫我何至於像
WHERE HS > 0
或者,我必須把我的子查詢轉換爲連接?
你可以使用一個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
看一下使用條款:
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
OR
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
我只是拉起SSMS寫出來。做得好。 – websch01ar
SO聲譽與你的CPU能力非常相關:) –
它可能是所有的虛擬機運行速度都放緩了。我需要儘快修復 – websch01ar
爲什麼你會想要避免子查詢的加入? –
你可以發佈「巨大的子查詢」,因爲不知道它是什麼意思,我們只能猜測:) – AbstractChaos