2011-10-12 14:56:00

A cross-join that does not have a WHERE clause produces the Cartesian product of the tables involved in the join. The size of a Cartesian product result set is the number of rows in the first table multiplied by the number of rows in the second table.

This is an example of a Transact-SQL cross-join:

SELECT a.Firstname,
       a.Lastname,
       p.Name
FROM   Author a
CROSS JOIN Publisher p
ORDER BY a.Lastname DESC

The result set contains 184 rows

authors have 23 rows and publishers have 8.

Therefore the cross-join produces 184 rows. (23 x 8 = 184)

However, if a WHERE clause is added, the cross-join behaves as an inner join.

For example, these queries produce the same result set:

SELECT a.Firstname,
       a.Lastname,
       p.Name
FROM   Author a
CROSS JOIN Publisher p
WHERE  a.CityId = p.CityId
ORDER BY a.Lastname DESC

Or

USE pubs
SELECT a.Firstname,
       a.Lastname,
       p.Name
FROM   Author a
INNER JOIN Publisher p
  ON   a.CityId = p.CityId
ORDER BY a.Lastname DESC
Copyright © 2025 delaney. All rights reserved.