一个用户可以对应多个角色,然后有三张表,那么如何填表查询的时候不重复,把用户的角色用逗号分割开 达梦数据库
时间: 2024-11-27 19:21:17 浏览: 1
sqlite数据库增删改查 不适用第三方数据库操作 一个数据库同时建多张表
在达梦数据库中,如果你有一个用户表(User)、角色表(Role),以及用户角色关联表(UserRole)来存储用户和他们对应的角色,可以使用JOIN和GROUP_CONCAT函数来避免在查询结果中显示重复的角色。
假设用户表(User)包含字段`UserId`,角色表(Role)包含字段`RoleId`,而用户角色关联表(UserRole)有`UserId`和`RoleId`两个字段。你可以使用以下SQL查询:
```sql
SELECT
User.UserId,
GROUP_CONCAT(DISTINCT Role.RoleName SEPARATOR ',') AS Roles
FROM
User
INNER JOIN
UserRole ON User.UserId = UserRole.UserId
INNER JOIN
Role ON UserRole.RoleId = Role.RoleId
GROUP BY
User.UserId;
```
这个查询做了以下操作:
1. 通过`INNER JOIN`将用户、关联和角色表连接在一起。
2. `DISTINCT`关键字确保每个角色只被计算一次。
3. 使用`GROUP_CONCAT`函数合并所有独特的角色名称,并用逗号分隔。
阅读全文