【问题标题】: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)
                    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 2011-07-28
      • 1970-01-01
      相关资源
      最近更新 更多