Подтвердить что ты не робот

Что объединяет поддержка SQLite?

В соответствии с синтаксисом join-op, SQLite имеет 13 различных заявлений о соединении:

,
JOIN
LEFT JOIN
OUTER JOIN
LEFT OUTER JOIN
INNER JOIN
CROSS JOIN
NATURAL JOIN
NATURAL LEFT JOIN
NATURAL OUTER JOIN
NATURAL LEFT OUTER JOIN
NATURAL INNER JOIN
NATURAL CROSS JOIN

Все ли они уникальны? Что эквивалентно?

4b9b3361

Ответ 1

Грамматика SQLite немного отличается от спецификации SQL-92, согласно которой следующие недопустимы:

*OUTER JOIN
*NATURAL OUTER JOIN
*NATURAL CROSS JOIN

Первые два, потому что a <join type>, чтобы содержать OUTER, должен также включать перед ним <outer join type>. Последнее, потому что NATURAL может присутствовать только в <qualified join>, а не <cross join>. Они, похоже, не ведут себя по какой-либо спецификации, поэтому рекомендуется избегать их.

Как было сказано в списке рассылки, SQLite3 поддерживает только три объединения: CROSS JOIN, INNER JOIN и LEFT OUTER JOIN. Следующие эквиваленты:

, == CROSS JOIN
JOIN == INNER JOIN
LEFT JOIN == LEFT OUTER JOIN

Как объяснено в статье wikipedia ключевое слово NATURAL является сокращением для поиска и сопоставления столбцов с одинаковым именем и не влияет на тип соединения.

В соответствии с страница SQLite, 'RIGHT' и 'FULL' OUTER JOIN не поддерживаются.