Выберите записи на основе приоритета столбца

Прежде всего, заголовок этого вопроса ужасен, но я не нашел лучшего способа описать свою проблему.

Вероятно, это очень простой способ сделать это, но я не могу понять это. Это очень похоже наэтот вопрос, но я работаю на sqlite3 (iOS), поэтому я подозреваю, что мои возможности гораздо более ограничены.

У меня есть таблица с записями продуктов. Все записи имеют идентификатор (примечание: я говорю не об идентификаторе строки, а об идентификационном номере, уникальном для каждого продукта). Некоторые продукты могут иметь две записи в таблице (оба с одинаковым идентификатором). Единственное отличие будет заключаться в специальном столбце (скажем, столбец COLOR может быть или красным или зеленым).

Я хочу создать список уникальных продуктов на основе значения COLOR с приоритетом GREEN, если записи GREEN и RED существуют для одного и того же продукта.

Короче, если у меня есть следующий случай:

id       PRODUCT ID    COLOUR
1        1001          GREEN
2        1002          GREEN
3        1002          RED
4        1003          RED

Я хотел бы, чтобы мой SELECT возвращал строки 1, 2 и 4. Как этого добиться?

Мой текущий подход состоит в том, чтобы иметь отдельные таблицы и выполнять соединение вручную, но, очевидно, это очень плохая идея.

Примечание. Я пытался использовать тот же подход изВот:

SELECT * 
  FROM xx
 WHERE f_COLOUR = "GREEN"
UNION ALL
SELECT * 
  FROM xx 
 WHERE id not in (SELECT distinct id 
                    FROM xx 
                   WHERE f_COLOUR = "GREEN");

Но результат, который я получаю, - строки 1,2,3,4 вместо 1,2,4. Что мне не хватает?

Edit: Пожалуйста, еще один вопрос: как это можно сделать для работы с подмножеством записей, т.е. если бы вместо всей таблицы я хотел отфильтровать некоторые записи?

Например, если у меня было что-то вроде SELECT * FROM таблицы, ГДЕ productID LIKE & quot; 1% & quot; ... как я могу получить каждый уникальный продукт, но с учетом приоритета цвета (GREEN & gt; RED)?

Ответы на вопрос(4)

Ваш ответ на вопрос