Как мне получить результаты, уникальные для определенного значения в таблице

#mysql

#mysql

Вопрос:

Я уверен, что вопрос сформулирован ужасно, но я не мог придумать лучшего способа его сформулировать. Вот идея, предположим, у меня есть таблица, которая выглядит следующим образом:

 id, status, orgId
123, green, 1
234, green, 1
345, blue,  1
456, blue,  2
567, blue,  2
789, red,   3
890, green, 3
  

Я ищу, чтобы получить список всех идентификаторов OrgID, где статусы всех идентификаторов для OrgID выделены синим цветом. Учитывая эти критерии, этот запрос приведет к «2» с учетом приведенной выше таблицы.

Простите меня, если это что-то довольно простое, но мои глубокие знания SQL довольно поверхностны. Спасибо!

Ответ №1:

В принципе, вы захотите использовать distinct, потому что вы ищете только один из каждого ответа, и вам нужно иметь WHERE предложение, которое получает только там, где статус синий.

 SELECT
    find.id
FROM (
    SELECT
        DISTINCT(orgId) AS id
    FROM
        my_table item
    WHERE
        item.status = 'blue') find
WHERE
    NOT EXISTS (
        SELECT
            *
        FROM
            my_table verify
        WHERE
            verify.orgId = find.id
        AND
            verify.status != 'blue')
  

Комментарии:

1. Привет, Кайл, спасибо за помощь! Я думаю, что это направляет меня в правильном направлении, но, похоже, может отсутствовать часть. Этот запрос вернет 1 и 2. Я ищу запрос, который возвращал бы только 2 с учетом приведенной выше таблицы. (Только OrgID, для всех идентификаторов которых установлено значение ‘blue’)

2. Вау! Спасибо, Кайл, я ценю это. Мне потребовалось бы довольно много времени, чтобы разобраться с этим самостоятельно. Очень рад, спасибо. Хотел бы я поддержать вас, но, к сожалению, я здесь слишком новичок. : (

3. Рад помочь. Удачи в будущих начинаниях!