3

我正在尝试进行查询,其中在数据库中有多个行中有多个组,但如果其中一行满足某个条件,我希望查询不返回任何内容。

我尝试使用 CASE 但这似乎不起作用

select *, 
    CASE WHEN groupname = 'is_%' and groupname != 'is_banned' THEN false END 
from usersgroups 
WHERE username = 'tu1';

不知道该怎么办。

谢谢

编辑:

这就是我拥有数据库 atm 的方式

username|usergroup
tu1     |is_user
tu1     |is_banned
tu2     |is_user

所以我想要得到的是查询仅在用户属于任何 is_ 组并且他们不是 is_banned 时才返回值,但问题是它们位于不同的行上

再次感谢

4

1 回答 1

2
select *
from usersgroups 
WHERE
    username = 'tu1'
    and exists (
        select 1
        from usersgroups
        where
            username = 'tu1'
            and groupname like 'is_%'
    )
    and not exists (
        select 1
        from usersgroups
        where
            username = 'tu1'
            and groupname = 'is_banned'
    )
于 2012-10-24T15:46:50.787 回答