47

次の SQL クエリは通常のクエリですか、それとも相関サブクエリですか??

SELECT UserID,
       FirstName,
       LastName,
       DOB,
       GFName,
       GLName,
       LoginName,
       LoginEffectiveDate,
       LoginExpiryDate,
       Password,
       Email,
       ReportingTo,
       Mobile,
       CommunicationPreference,
       IsActive
FROM   (SELECT row_number() OVER (ORDER BY FirstName) AS Row,
               UserID,
               FirstName,
               LastName,
               DOB,
               GFName,
               GLName,
               LoginName,
               LoginEffectiveDate,
               LoginExpiryDate,
               Password,
               Email,
               ReportingTo,
               Mobile,
               CommunicationPreference,
               IsActive
        FROM   DivakarUserRegistration)  T

また、誰かが両方の違いを述べることはできますか

4

8 に答える 8

85

上記の例は、Co-related Sub-Query ではありません。つまり、FROM句内のサブクエリなので、派生テーブル/インラインビューです。

相関サブクエリは、その親 (メイン クエリ) テーブルを参照する必要があります。たとえば、相互関連サブクエリによる N 番目の最大給与の検索を参照してください。

SELECT Salary 
FROM Employee E1
WHERE N-1 = (SELECT COUNT(*)
             FROM Employee E2
             WHERE E1.salary <E2.Salary) 

相互関連とネストされたサブクエリ。

通常のサブクエリと相互関連サブクエリの技術的な違いは次のとおりです。

1. ループ: メイン クエリの下の相互に関連するサブクエリ ループ。一方、ネストされていません。したがって、相互に関連するサブクエリは、メインクエリの各反復で実行されます。一方、ネストされたクエリの場合。サブクエリが最初に実行され、次に外側のクエリが実行されます。したがって、最大数。実行回数は、相関サブクエリの場合は NXM、サブクエリの場合は N+M です。

2. 依存関係 (内部から外部へ、外部から内部へ): 相互に関連するサブクエリの場合、内部クエリは処理のために外部クエリに依存しますが、通常のサブクエリでは、外部クエリは内部クエリに依存します。

3.パフォーマンス: Co-related サブクエリを使用すると、N+M 反復ではなく NXM 反復を実行するため、パフォーマンスが低下します。¨ 相互に関連するサブクエリの実行。

例の詳細については:

http://dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-Sql-Sub-Queries-Nested-Co-related.html

于 2014-01-10T05:31:19.987 に答える
58

相関サブクエリは、外部クエリの値を使用するサブクエリです。この場合、外側のクエリのすべての行に対して内側のクエリを実行する必要があります。

ここで例を参照してください http://en.wikipedia.org/wiki/Correlated_subquery

単純なサブクエリは、外側のクエリからの値を使用せず、1 回だけ計算されます。

SELECT id, first_name 
FROM student_details 
WHERE id IN (SELECT student_id
FROM student_subjects 
WHERE subject= 'Science'); 

CoRelated サブクエリの例 -

給与が部門の平均を上回っているすべての従業員を検索するクエリ

 SELECT employee_number, name
       FROM employees emp
       WHERE salary > (
         SELECT AVG(salary)
           FROM employees
           WHERE department = emp.department);
于 2013-06-24T06:41:26.407 に答える
7

CORRELATED SUBQUERIES: メイン クエリによって処理される行ごとに評価されます。外部クエリによって取得された値に基づいて、内部クエリを実行します。メイン クエリによって返されたすべての値が一致するまで続行します。INNER クエリは OUTER クエリによって駆動されます

元:

SELECT empno,fname,sal,deptid FROM emp e WHERE sal=(SELECT AVG(sal) FROM emp WHERE deptid=e.deptid)

相関サブクエリはAVG(sal)、部門ごとに具体的に計算します。

SUBQUERY: 最初に実行され、一度実行され、MAIN クエリで使用される値を返します。OUTER クエリは INNER QUERY によって駆動されます

于 2014-07-17T08:35:54.350 に答える
2

サブクエリと相互関連クエリの両方に内部クエリと外部クエリがある場合、唯一の違いは、サブクエリでは内部クエリが外部クエリに依存しないのに対し、相互関連内部クエリでは外部クエリに依存することです。

于 2014-11-17T04:22:20.700 に答える
1

I think below explanation will help to you.. differentiation between those: Correlated subquery is an inner query referenced by main query (outer query) such that inner query considered as being excuted repeatedly.

non-correlated subquery is a sub query that is an independent of the outer query and it can executed on it's own without relying on main outer query.

plain subquery is not dependent on the outer query,

于 2013-06-24T06:51:34.920 に答える