Выберите записи на основе приоритета столбца
Прежде всего, заголовок этого вопроса ужасен, но я не нашел лучшего способа описать свою проблему.
Вероятно, это очень простой способ сделать это, но я не могу понять это. Это очень похоже наэтот вопрос, но я работаю на 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)?