【问题标题】:Simple SQL Server syntax assistance please请提供简单的 SQL Server 语法帮助
【发布时间】:2020-07-27 05:10:41
【问题描述】:
我正用这个把头撞到墙上。为什么 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)
我收到此错误:
')' 附近的语法不正确
【问题讨论】:
标签:
sql
join
select
syntax-error
ssms
【解决方案1】:
您缺少括号中子查询的别名和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】:
这里不用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)
);