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)SQLServerにそのルールが何であるかを通知する必要があります。

于 2012-08-02T07:31:56.750 に答える