SQL Server - синтаксис вокруг функций UNION и USE - PullRequest
0 голосов
/ 17 мая 2018

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

Я использую 'USE', чтобы указать, какую базу данных запрашивать, после чего создаю несколько временных таблиц для группировки моих данных, прежде чем использовать заключительный оператор SELECT для объединения всех данных из базы данных.

Затем я использую UNION, затем вторую команду USE для следующей базы данных и т. Д.

SQL Server показывает синтаксическую ошибку в слове «UNION», но не помогает определить причину проблемы.

Возможно ли, что мне не хватает персонажа. В настоящее время я нигде не использую (или).

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Оператор USE просто перенаправляет ваш сеанс для подключения к другой базе данных в одном и том же экземпляре, в этом случае вам не нужно переключаться из базы данных в базу данных (есть несколько редких исключений, кроме).

Используйте нотацию из 3 частей, чтобы объединить ваши результирующие наборы.Вы можете сделать это, будучи подключенным к любой базе данных.

SELECT
    SomeColumn = T.SomeColumn
FROM
    FirstDatabase.Schema.TableName AS T
UNION ALL
SELECT
    SomeColumn = T.SomeColumn
FROM
    SecondDatabase.Schema.YetAnotherTable AS T

Движок автоматически проверит пользователей вашего логина в каждой базе данных и проверит ваши разрешения для базовых таблиц или представлений.

UNION добавляет наборы результатов вместе, вы не можете выполнить другую операцию (например, USE), отличную от SELECT между UNION.

0 голосов
/ 17 мая 2018

Вы должны использовать имена баз данных перед именем таблицы:

SELECT valueFromBase1
 FROM `database1`.`table1`
  WHERE ...
UNION
SELECT valueFromBase2
 FROM `database2`.`table2`
  WHERE ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...