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