1

我正在使用以下查询查询我的表;

SELECT DISTINCT [RoleId], [RoleName], [RoleDescription], [PermissionId]  
FROM [Role] 
ORDER BY [RoleName]

我得到以下结果;

RoleId  RoleName    RoleDescription PermissionId
   1        Admin            CanEdit        1
   2        Admin            asdf;lkj       2
   3        Admin            al;dskfj;l     3
   4        Admin            fa;ldkfjas;d   4
  17        SuperAdmin      aslkdfja;      1
  18        SuperAdmin      asldkfa;f      2
  15        Users           alskdfj;alk    1
  16        Users           aslkdfja;sl    2

但是,我想获得 RoleName 的唯一值,即 RoleName 不应该重复,这已经在我的查询结果中。我想获得一次 RoleName 。 如何获得唯一的 RoleName?

更新: 我想用以下结果填充组合框;

Admin
SuperAdmin
Users

但不重复(我已经在使用我的查询

Admin
Admin
Admin
Admin
SuperAdmin
SuperAdmin
Users
Users
4

3 回答 3

5

如果您只想拥有 Distinct RoleName,那么您可以像这样查询表。

SELECT DISTINCT [RoleName]
FROM [Role]
ORDER BY [RoleName]
于 2012-08-02T05:52:48.707 回答
1

您正在观看的答案有点复杂。如果您想要这种类型的结果,那么您可能必须将您的流程更改为“添加角色”。当您从前端插入角色时,您必须检查正在输入的角色名称是否在数据库中不存在。然后,您可以使用以下查询轻松获得您所看到的结果。

Select Distinct rolename,roleid from tblroles
于 2012-08-02T06:04:13.373 回答
0

你说你想要RoleId的也一样RoleName。好吧,你必须告诉系统选择哪个 RoleId

SELECT MIN(RoleId) as RoleId, RoleName
FROM Role
GROUP BY RoleName
ORDER BY RoleName

在这种情况下,我有些武断地选择RoleId为每个名称使用最低的名称。如果您想使用不同的规则,那么您 a) 需要告诉我们该规则是什么,和/或 b) 需要告诉 SQL Server 该规则是什么。

于 2012-08-02T07:31:56.750 回答