我正在尝试使用c#获取SQL Server表中的所有唯一列。
对于前。我有一个名为“Emp”的表,其中包含以下列:
Id (PK), Name, Address, SSN (Unique)
如何检索C#中唯一的列?
答案 0 :(得分:1)
喜欢这个。
WITH i_unique AS (
SELECT i.object_id, i.index_id
FROM sys.indexes AS i
INNER JOIN sys.index_columns AS ic
ON ic.object_id = i.object_id
AND ic.index_id = i.index_id
WHERE i.is_unique = 1/*true*/
GROUP BY i.object_id, i.index_id
HAVING COUNT(ic.column_id) = 1
)
SELECT
c.name AS 'column_name',
i.name AS 'index_name'
FROM sys.objects AS o
INNER JOIN sys.indexes AS i
INNER JOIN i_unique
ON i_unique.object_id = i.object_id
AND i_unique.index_id = i.index_id
INNER JOIN sys.index_columns AS ic
INNER JOIN sys.columns AS c
ON c.object_id = ic.object_id
AND c.column_id = ic.column_id
ON ic.object_id = i.object_id
AND ic.index_id = i.index_id
ON i.object_id = o.object_id
WHERE o.object_id = OBJECT_ID('Emp');
<强>更新强>
请记住,当列唯一索引包含的列时,它会返回一列。因此,复合索引上的那些被排除在外(因为它们本身并不是唯一的)。