2011-06-17 16 views
2

フェロー、 の回避:は、次のように私は、クエリを持つサブクエリ

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 

かのようなものとして、私は参加に私のサブクエリを有効にする必要がありますどこを書き換える方法はありますか?

+0

は、なぜあなたは参加してサブクエリを避けたいでしょうか? –

+0

「大きなサブクエリ」を投稿すると、それが何を意味するのかわからなくてもわかります。 – AbstractChaos

答えて

5

あなたは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 
6

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 

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 
+0

私はちょうどこれを書くためにSSMSをプルアップしていました。よくやった。 – websch01ar

+1

SOの評判はあなたのCPUの能力に非常に関連しています:) –

+0

おそらくすべてのVMが動いて私を減速させます。私はそれを直ちに取得する必要があります – websch01ar

関連する問題