Как работает SELECT из двух таблиц, разделенных запятой?(ВЫБРАТЬ * ОТ T1, T2) - PullRequest
27 голосов
/ 21 августа 2010

С учетом 2 таблиц T1 и T2.

T1   T2 
---------
A    1 
B    2
C    3

Вы делаете запрос:

SELECT * 
  FROM T1, T2

Что такое число: строк, извлекаемых из этого запроса?

(a) 4
(b) 5
(c) 6
(d) 9

Ответ: 9

Вопрос:

Почему ответ «9»?

1 Ответ

73 голосов
/ 21 августа 2010

Запятая между двумя таблицами означает CROSS JOIN , который дает декартово произведение двух таблиц. Ваш запрос эквивалентен:

SELECT *
FROM T1
CROSS JOIN T2

Результатом является каждое соединение строки из первой таблицы со строкой из второй таблицы. Поэтому количество строк в результате является произведением количества строк в исходных таблицах. В этом случае ответ 3 х 3 = 9.

Строки будут выглядеть следующим образом:

T1.foo   T2.bar
A        1
A        2
A        3
B        1
B        2
B        3
C        1
C        2
C        3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...