【发布时间】:2017-12-20 22:29:14
【问题描述】:
我需要获取仅使用一个用户名的活动用户的域 ID,该用户名应以“a-%”或“A-%”开头,并且所有其他用户名应为 system_id 349 的“禁用”,如下所示图片,
预期结果:
我使用的查询是:
SELECT * FROM
(SELECT DISTINCT p.domain_id
FROM ur_username u
JOIN ur_username_person up ON u.username_id = up.username_id
JOIN ur_person p ON up.person_id = p.person_id
JOIN ur_system s ON u.system_id = s.system_id
WHERE ( u.username LIKE 'A-%' OR username LIKE 'a-%') AND u.status = 'ACTIVE' AND u.system_id = 34)E
WHERE E.domain_id IN (SELECT p.domain_id FROM ur_username u JOIN ur_username_person up ON u.username_id = up.username_id
JOIN ur_person p ON up.person_id = p.person_id
WHERE u.system_id = 349 AND u.status = 'DISABLED')
例如 Pri_0911 (domain_id) 有多个用户名,但他是活动的,只有用户名以 'a-%' 开头,所有其他用户名都被禁用。所以我们需要选择与此条件匹配的域 id。
domain_id | username | status | system_id |
Pri_0911 | asdfg | disabled | 349 |
Pri_0911 | werdfdf | disabled | 349 |
Pri_0911 | zxgfg | disabled | 349 |
Pri_0911 | a-priya | ACTIVE | 349 |
【问题讨论】:
-
(U.USERNAME LIKE 'A-%' or USERNAME LIKE 'a-%') 在括号中。否则你说的是 U.USERNAME LIKE 'A-%' OR blablabla
-
@MiloBellano 我改变了提到的点,但在这里仍然没有得到预期的结果。谢谢
-
你得到的输出是什么?
-
表的 ddl 也有助于更好地理解查询中的连接。如果一个用户名 a-% 只是处于活动状态而从未发生过它被禁用怎么办?我猜在你的查询中你会跳过它们
-
您应该编辑您的问题以包含额外信息