Простой SQL Синтаксис сервера, пожалуйста - PullRequest
1 голос
/ 14 апреля 2020

Я бьюсь головой об стену с этим. Почему редактор запросов в SSMS выдает ошибку об закрывающей скобке в конце этого запроса?

SELECT 
    c.TABLE_NAME,
    c.COLUMN_NAME
FROM 
    INFORMATION_SCHEMA.COLUMNS c
INNER JOIN 
    (SELECT COLUMN_NAME
     FROM INFORMATION_SCHEMA.COLUMNS
     GROUP BY COLUMN_NAME
     HAVING COUNT(*) = 1)

Я получаю эту ошибку:

Неверный синтаксис рядом с ')'

Ответы [ 2 ]

3 голосов
/ 14 апреля 2020

Вам не хватает псевдонима для подзапроса в скобках и предложение on:

SELECT 
    c.TABLE_NAME,
    c.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS c
INNER JOIN 
    (SELECT 
        COLUMN_NAME
    FROM INFORMATION_SCHEMA.COLUMNS
    GROUP BY COLUMN_NAME
    HAVING COUNT(*) = 1
    ) x -- Alias added here
    ON x.COLUMN_NAME = c.COLUMN_NAME -- ON caluse
2 голосов
/ 14 апреля 2020

Вам не нужно использовать join здесь, вы можете использовать exists:

select c.*
from information_schema.columns c
where not exists (select 1 
                  from information_schema.columns c1
                  where (c1.column_name = c.column_name) and
                        (c1.table_name <> c.table_name or c1.table_schema <> c.table_schema)
                );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...