A correlated subquery relies on the main query for its processing. : Correlated subquery « Subquery « SQL Server / T-SQL Tutorial






Correlated subqueries rely on a value from the main query to retrieve its rows you will always see a column from the main query being referenced by the subquery.

9>
10>
11> CREATE TABLE authors(
12>    au_id          varchar(11),
13>    au_lname       varchar(40)       NOT NULL,
14>    au_fname       varchar(20)       NOT NULL,
15>    phone          char(12)          NOT NULL DEFAULT ('UNKNOWN'),
16>    address        varchar(40)           NULL,
17>    city           varchar(20)           NULL,
18>    state          char(2)               NULL,
19>    zip            char(5)               NULL,
20>    contract       bit               NOT NULL
21> )
22> GO
1> insert authors values('1',  'Joe',   'Abra',   '111 111-1111', '6 St.', 'Berkeley',  'CA', '11111', 1)
2> insert authors values('2',  'Jack',  'Majo',   '222 222-2222', '3 St.', 'Oakland' ,  'CA', '22222', 1)
3> insert authors values('3',  'Pink',  'Cherry', '333 333-3333', '5 Ln.', 'Vancouver', 'BC', '33333', 1)
4> insert authors values('4',  'Blue',  'Albert', '444 444-4444', '7 Av.', 'Vancouver', 'BC', '44444', 1)
5> insert authors values('5',  'Red',   'Anne',   '555 555-5555', '6 Av.', 'Regina',    'SK', '55555', 1)
6> insert authors values('6',  'Black', 'Michel', '666 666-6666', '3 Pl.', 'Regina',    'SK', '66666', 1)
7> insert authors values('7',  'White', 'Sylvia', '777 777-7777', '1 Pl.', 'Rockville', 'MD', '77777', 1)
8> insert authors values('8',  'Yellow','Heather','888 888-8888', '3 Pu',  'Vacaville', 'CA', '88888', 0)
9> insert authors values('9',  'Gold',  'Dep',    '999 999-9999', '5 Av.', 'Oakland',   'CA', '99999', 0)
10> insert authors values('10', 'Siler', 'Dean',   '000 000-0000', '4 Av.', 'Oakland',   'CA', '00000', 1)
11> GO

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)
1>
2> CREATE TABLE titleauthor(
3>    au_id          varchar(20),
4>    title_id       varchar(20),
5>    au_ord         tinyint               NULL,
6>    royaltyper     int                   NULL
7> )
8> GO
1>
2> insert titleauthor values('1', '2', 1, 60)
3> insert titleauthor values('2', '3', 1, 100)
4> insert titleauthor values('3', '4', 1, 100)
5> insert titleauthor values('4', '5', 1, 100)
6> insert titleauthor values('5', '6', 1, 100)
7> insert titleauthor values('6', '7', 2, 40)
8> insert titleauthor values('7', '8', 1, 100)
9> insert titleauthor values('8', '9', 1, 100)
10> GO

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)
1>
2>      SELECT    DISTINCT au_lname, au_fname
3>      FROM      authors
4>      WHERE     10 IN (SELECT royaltyper
5>                FROM titleauthor
6>                 WHERE titleauthor.au_id = authors.au_id)
7> GO
au_lname                                 au_fname
---------------------------------------- --------------------

(0 rows affected)
1>
2> drop table titleauthor;
3> drop table authors;
4> GO
1>
2>








8.2.Correlated subquery
8.2.1.A correlated subquery relies on the main query for its processing.
8.2.2.using SELECT DISTINCT or a GROUP BY statement in the inner query
8.2.3.Correlated subquery using Group By
8.2.4.Correlated subquery using TOP 1