SQL-запрос для выбора строк, в которых столбец содержит только определенные значения

avatar
whd.nsr
9 августа 2021 в 07:04
481
2
1

У меня есть таблица идентификаторов, которая выглядит следующим образом.

id  child   order_in_child
 1   200        34
 1   700        11
 2   200        31
 2   200        74
 3   200        35
 3   400        19

Я хочу выбрать список идентификаторов, в котором все дочерние элементы имеют только 200.

id  
 2  
Источник
jarlh
9 августа 2021 в 07:06
0

Подсказка: СГРУППИРОВАТЬ ПО, ИМЕТЬ.

Ответы (2)

avatar
Tim Biegeleisen
9 августа 2021 в 07:09
6

Используя агрегацию, мы можем попробовать:

SELECT id
FROM identities
GROUP BY id
HAVING MIN(child) = MAX(child) AND MIN(child) = 200;

Первое условие предложения HAVING утверждает, что данная группа записей id имеет только одно значение child. Второе условие утверждает, что это единственное значение равно 200.

avatar
Shreekesh Murkar
9 августа 2021 в 07:30
0

Попробуйте следующий код:

select DISTINCT id from identities where child = 200
Tim Biegeleisen
9 августа 2021 в 11:15
0

Но это также будет включать id, у которых child значения другие, чем 200.

Shreekesh Murkar
9 августа 2021 в 11:17
0

@TimBiegeleisen Нет! Поскольку мы использовали предложение «где», которое фильтрует данные, имеющие дочернее значение, равное 200

Tim Biegeleisen
9 августа 2021 в 11:18
0

Из ОП: I want to select the list of ids where all child are only 200.

Shreekesh Murkar
9 августа 2021 в 11:20
0

Да. Запрос, который я написал, будет работать гладко для этого требования.