Соединение SQL с использованием USING: <имя столбцa> не является признанным параметром подсказки таблицы

У меня есть следующий JOIN:

SELECT * FROM tableA INNER JOIN tableB USING (commonColumn)

Я получаю сообщение об ошибке:

"commonColumn" не является признанным опцией подсказки таблицы. Если это предназначенный как параметр для табличной функции или для CHANGETABLE, убедитесь, что ваш режим совместимости с базой данных установлен на 90.

Вместо этого работает следующее:

SELECT * FROM tableA INNER JOIN tableB ON tableA.commonColumn = tableB.commonColumn

Уровень совместимости в моем случае равен 100 (SQL Server 2008), в то время как, кстати, я работаю с SQL Server 2012.

Что я делаю неправильно? Мне очень трудно найти пример использования ключевого слова USING, так как практически невозможно выполнить соответствующий веб-поиск. Тем не менее, кажется правильным использовать, когда "соединяющие столбцы" имеют одно и то же имя...

Ответ 1

USING не поддерживается синтаксисом SQL Server. Это не зарезервированное ключевое слово, так что механизм запроса использует это как псевдоним таблицы.

Это ключевое слово ODBC, но они обрабатываются несколько иначе. Двигатель не всегда будет жаловаться, если вы их используете, но вы не должны использовать их в любом случае.

Он также указан как возможное ключевое слово зарезервированного будущего. Обычно для новых выпусков SQL Server добавлять слова в основной зарезервированный список.

Лично я не вижу, чтобы они добавляли поддержку синтаксиса NATURAL JOIN, даже с помощью USING. Многие администраторы баз данных считают проблемы NATURAL JOINs проблематичными.

Ответ 2

Ключевое слово USING используется для указания исходных данных для операторов MERGE (называемых <table source>) в документации.