有什么方法可以将列名与索引所具有的列名匹配。
因此,例如让我们说 index1 使用列名称、年龄、地址和 index2 使用(在同一个表中)名称、年龄。(全部用于一个特定的表)
如果我将名称、年龄和表名传递给存储过程,我应该编写什么查询,它将返回 index2 而不是 index1。
我遇到了许多关于如何列出具有索引和表名的列的示例,例如:
但仍然有问题为我的使用编写 sql 查询。
任何帮助将非常感激,
谢谢
(这适用于 Microsoft sql server 2008 - 2012)
这是我写的,它不能正常工作,因此问题
select index1.name,sys.tables.name, Stuff((SELECT ',' + sys.columns.name AS [text()]
FROM
(
select sys.columns.name
from sys.columns
inner join sys.index_columns On sys.index_columns.index_column_id=sys.columns.column_id
inner join sys.indexes on sys.indexes.index_id=sys.index_columns.index_id
where sys.indexes.index_id=index1.index_id
) x
For XML PATH (''), type ).value('(./text())[1]','NVARCHAR(MAX)'),1,1,'') As coLName
from sys.indexes as index1
inner join sys.tables on sys.tables.object_id=index1.object_id
inner join sys.index_columns On index1.index_id=sys.index_columns.index_id AND sys.index_columns.object_id = sys.tables.object_id
inner join sys.columns on sys.columns.column_id=sys.index_columns.column_id And sys.columns.object_id=sys.tables.object_id
where sys.tables.name=TABLE_NAME