У меня есть таблица видео:
Как получить записи с лучшим определением запрашиваемой категории и игнорировать подобные.
SELECT [...] WHERE category IN(1,2,3,4);
Ожидаемый результат:
Ключ состоит в том, чтобы найти подходящую category
с наименьшей мощностью:
with given_data(cat) as (
select * from unnest (array[1,2,3,4])
)
select distinct on(cat) *
from urls
cross join given_data
where cat = any(category)
order by cat, cardinality(category);
id | url | category | cat
----+----------+-----------+-----
1 | example1 | {1,2,3,4} | 1
2 | example2 | {2} | 2
3 | example3 | {3} | 3
4 | example4 | {4} | 4
(4 rows)
id=2
а неid=6
илиid=3
вместоid=5
?