Выберите группы пользователей, если один или несколько пользователей оставили комментарий - PullRequest
0 голосов
/ 17 марта 2020

Рассмотрим следующее table1

user   group   comment
----------------------
 1     a       foo
 2     a
 3     a
 4     b       bar
 5     c
 6     c
 7     d
 8     d
 9     d
10     d
11     e       bax
12     e       baz

Мне нужно сделать 2 запроса, каждый из которых возвращает группы:

  • запрос 1: группы, в которых хотя бы 1 пользователь оставил комментарий
  • запрос 2: группы, в которых ни один пользователь не оставил комментарий

результат запроса 1:

user   group   comment
----------------------
 1     a       foo
 2     a
 3     a
 4     b       bar
11     e       bax
12     e       baz

результат запроса 2:

user   group   comment
----------------------
 5     c
 6     c
 7     d
 8     d
 9     d

Я попробовал следующее, но затем я увидел несколько одинаковых user в обеих группах:

select  * 
from    [table1] t1
where   t1.[group] in (
    select distinct [group] from [table] where [comment] <> ''
)
order by t1.[user] asc

select  * 
from    [table1] t1
where   t1.[group] in (
    select distinct [group] from [table] where [comment] = ''
)
order by t1.[user] asc

Затем я понял, что это потому, что в одной группе, комментарий может быть установлен (comment <> '') И не установлен (comment = ''), но я не знаю, как решить эту проблему в моих запросах.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 17 марта 2020

Вы можете использовать exists и not exists. Для групп с комментариями:

select t1.*
from table1 t1
where exists (select 1
              from table1 tt1
              where tt1.group = t1.group and
                    tt1.comment is not null
             );

Используйте not exists для другого набора строк.

1 голос
/ 17 марта 2020

Вы можете использовать exists и not exists:

Это дает вам пользователей групп, в которых были размещены комментарии.

select t.*
from mytable t
where exists (
    select 1 from mytable t1 where t1.group = t.group and t1.comment is not null
)

Чтобы получить пользователей групп без любой комментарий, вы можете просто включить exists на not exists.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...