我正在尝试进行查询,在数据库中有多个组中的多个组,但如果其中一行符合某个条件,我希望查询不返回任何内容。
我尝试使用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,但问题是他们在不同的行
再次感谢
答案 0 :(得分: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'
)