【发布时间】:2017-10-15 07:33:00
【问题描述】:
将 UNION 与两个选择查询一起使用后,我得到以下结果
UserId Name Status
------ ------ --------
1 User1 Active
2 User2 Active
1 User1 InActive
3 User3 InActive
但预期的结果是
UserId Name Status
---------------------
1 User1 Active
2 User2 Active
3 User3 InActive
我需要的是,如果任何一个结果处于活动状态,我想按列 Id 分组并获得状态为活动。如何为此形成 SQL 查询?
任何人都可以建议查询以下任一数据库吗?
- MSSQL
- 甲骨文
- MySQL
- PostgreSQL
编辑:
这是我在 PostgreSQL 中尝试过的查询
(SELECT DISTINCT User.Id,User.DisplayName,AppAccessToUsers.IsActive='1' AND User.IsActive='1' AS IsStatusActive
FROM Applications Left JOIN AppAccessToUsers ON (Applications.Id=AppAccessToUsers.ApplicationId)
Left JOIN User ON (AppAccessToUsers.UserId=User.Id) WHERE Applications.ClientId='e7e66c1b-b3b8-4ffb-844b-fc4840803265')
UNION
(SELECT DISTINCT User.Id,User.DisplayName,AppAccessToGroups.IsActive='1' AND Group.IsActive='1' AND UserGroup.IsActive='1' AND User.IsActive='1' AS IsStatusActive
FROM Applications Left JOIN AppAccessToGroups ON (Applications.Id=AppAccessToGroups.ApplicationId)
Left JOIN Group ON (AppAccessToGroups.GroupId=Group.Id) Left JOIN UserGroup ON (Group.Id=UserGroup.GroupId)
Left JOIN User ON (UserGroup.UserId=User.Id) WHERE Applications.ClientId='e7e66c1b-b3b8-4ffb-844b-fc4840803265')
【问题讨论】:
-
你尝试过什么查询
-
你根据什么来决定一个用户是否同时拥有活跃和不活跃的记录,那么应该以哪一个为准?
-
他们中的任何一个?你会根据你在这里得到的答案选择 db 吗?
-
@Shadow 如果用户有至少一个活动记录,我想将状态设为活动
-
@jarlh 我正在使用上面列出的所有数据库。您可以为任何人推荐数据库
标签: mysql sql sql-server oracle postgresql