2014-11-13 5 views
1

Есть ли когда-нибудь случай, когда соединение не будет возвращать данные, из которых возвращается несколько таблиц FROM с одинаковыми условиями?JOIN vs Multiple FROM Tables

например.

SELECT * 
FROM TableNames as Names 
INNER JOIN TableNumbers as Numbers on Names.ID = Numbers.ID 

VS

SELECT * 
FROM TableNames as Names, TableNumbers as Numbers 
WHERE Names.ID = Numbers.ID 
+0

Нет, они одни и те же. – SMA

+0

Возможный дубликат [INNER JOIN ON vs WHERE clause] (http://stackoverflow.com/questions/1018822/inner-join-on-vs-where-clause) –

ответ

1

INNER JOIN (как в вашем первом примере) всегда будет возвращать те же данные, что и ваше декартовое соединение, с фильтром WHERE, который использует те же критерии соединения (ваш второй пример). Однако обратите внимание, что это не относится к OUTER JOINs, где значения NULL отфильтровываются в декартовом соединении с фильтром WHERE в качестве критериев присоединения.

0

Просто, как запросы однотипны и сделать то же самое.

  1. Внутренняя регистрация считается более читаемой, особенно когда вы присоединяетесь к множеству таблиц.
  2. Синтаксис WHERE больше ориентирован на реляционную модель.