获取具有多个条件的一个列值

问题描述 投票:0回答:1

我需要获取只有一个用户名的用户的域ID,该用户名应该以'a-%'或'A-%'开头,而所有其他用户名应该为system_id 349的“Disabled”,如下图所示

预期结果:

enter image description here

我使用的查询是:

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      |
sql oracle oracle9i
1个回答
0
投票

如果我正确理解您的最新要求,请不要给您以后的内容?

SELECT DISTINCT p.domain_id,
                u.username
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     u.username LIKE 'a-%';
© www.soinside.com 2019 - 2024. All rights reserved.