3

データベース内の複数の行に複数のグループがあるクエリを実行しようとしていますが、行の1つが特定の基準を満たしている場合、クエリは何も返さないようにします。

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 に答える