@tehnomad

Как сделать такую выборку?

Есть таблица, в ней 2 столбца:

user_id class_id
01 0
01 1
01 2
01 3

Как мне выбрать все user_id которые имеют class_id 3, но не имеют class_id 2?
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
BojackHorseman
@BojackHorseman Куратор тега SQL
...в творческом отпуске...
SELECT
 t.user_id,
 SUM(CASE WHEN t.class_id = 3 THEN 1 ELSE 0 END) AS _has_3,
 SUM(CASE WHEN t.class_id = 2 THEN 1 ELSE 0 END) AS _has_2
FROM <tablename> t
GROUP BY t.user_id
HAVING _has_3 > 0 AND _has_2 = 0
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `user_id`
  FROM `table`
  WHERE `class_id` = 3
    AND `user_id` NOT IN (
      SELECT `user_id`
        FROM `table`
        WHERE `class_id` = 2
    )
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы