Грамматика SQLite немного отличается от спецификации SQL-92 , согласно которой следующее недопустимо:
*OUTER JOIN
*NATURAL OUTER JOIN
*NATURAL CROSS JOIN
Первые два, потому что <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
Как объяснено в статье в википедии ключевое слово NATURAL является сокращением для поиска и сопоставления в столбцах с одинаковыми именами и не влияет на тип объединения.
В соответствии с страницей SQLite , 'RIGHT
' и 'FULL
' OUTER JOIN
не поддерживаются.