Tsql T-SQL删除此查询上的重复列

Tsql T-SQL删除此查询上的重复列,tsql,Tsql,我有一个视图“TableInformationView” 除了列是另一个表的外键外,该视图工作正常 看看如何操作 SELECT * FROM TableInformationView WHERE TableInformationView.SchemaName + TableInformationView.BaseTableName + TableInformationView.ColumnName IN ( select TOP 1

我有一个视图“TableInformationView”

除了列是另一个表的外键外,该视图工作正常

看看如何操作

SELECT * FROM TableInformationView 
WHERE 
    TableInformationView.SchemaName + 
    TableInformationView.BaseTableName + 
    TableInformationView.ColumnName

    IN
    (
    select TOP 1
        TableInformationView.SchemaName + 
        TableInformationView.BaseTableName + 
        TableInformationView.ColumnName
    from 
    TableInformationView 
    group by
        TableInformationView.SchemaName + 
        TableInformationView.BaseTableName + 
        TableInformationView.ColumnName 
    having COUNT(*) > 1
)
编辑: != 符号已更正,但这没有任何区别

有谁能为我提供一个解决方案,这样就不需要额外的列的行表示了


谢谢。

如果您希望查询以获得唯一的表、列组合,可以使用此查询:

SELECT *
  FROM (
        SELECT a.*, 
               ROW_NUMBER() OVER(PARTITION BY a.SchemaName,a.BaseTableName,a.ColumnName ORDER BY TableName DESC) rnk
          FROM TableInformationView  a
                ) a
WHERE rnk = 1

为什么要加入
信息\u模式。表\u约束两次?第二次是找出关系的父表。也许我误解了这个问题。那么,您对视图定义或使用视图的SELECT查询有问题吗?问题在于视图本身。
SELECT *
  FROM (
        SELECT a.*, 
               ROW_NUMBER() OVER(PARTITION BY a.SchemaName,a.BaseTableName,a.ColumnName ORDER BY TableName DESC) rnk
          FROM TableInformationView  a
                ) a
WHERE rnk = 1