У меня есть таблица articles
с колонкой типа SET
по имени categories
. Предположим, что он принимает значения от cat1, cat2, cat3, cat4
. Вот визуальное представление:sql тип комплекта
articleTitle | categories (of type SET) | ID
--------------------------------------------
Socializing | cat1 | 1
Programming | cat1,cat2 | 2
Sports | cat1,cat2,cat3 | 3
Hiking | cat2 | 4
Nutrition | cat1 | 5
Health | cat1,cat2,cat4 | 6
1. Я хочу сделать SQL select
вернуть название статьи из первых п строк, где параметр val1
совпадает с любым из значений в categories
колонки. например:if val1=cat1
, тогда результаты будут Socializing, Programming, Sports, Nutrition, Health
;
2. Я также хочу сделать SQL-запрос select
, чтобы определить, как val1, val2
матча два значения из столбца categories
. например:if val1=cat1 AND val2=cat2
, тогда результаты будут Programming, Sports, Health
;
3. Наконец, было бы идеально, чтобы сделать запрос, который возвращает первый п ряда статей с наибольшим количеством матчей в categories
колонки - означает общее количество матчей вытесняет частичные совпадения и первый матч с список значений имеет приоритет над вторым. например:if val1=cat1 AND val2=cat2 AND val3=cat3 AND numerOfRows=4
, тогда результаты будут Sports, Programming, Health, Socializing
;
Как я могу это сделать? Возможно ли это, или мне нужно запустить несколько запросов - я предполагаю, что в сценарии с несколькими запросами логика подсчета и сопоставления будет оставлена во внутренней части вещей, и я бы сделал одну вещь за раз? Хотелось бы получить помощь в первых двух сценариях.
Если есть необходимость уточнения, спросите, и я исправлю вопрос.
Хотелось бы, чтобы они никогда не думали о SET – Strawberry