MySQL - назначать числа на основе значения - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь повторить то, что я делаю, с помощью приведенного ниже кода, но без использования CASE:

CASE
WHEN c.Path LIKE '/Local/Activities%' THEN 2
WHEN c.Path LIKE '/Local/Automotive%' THEN 3
WHEN c.Path LIKE '/Local/Beauty & Spas%' THEN 4
WHEN c.Path LIKE '/Local/Food & Drink%' THEN 5
WHEN c.Path LIKE '/Local/Health & Fitness%' THEN 6
WHEN c.Path LIKE '/Local/Personal Services%' THEN 7
ELSE 8
END AS Category

У меня есть 6 основных категорий, которым я присвоил номера с этим CASE.Я хочу сделать то же самое для моих подкатегорий, однако у меня есть около 100 из них, что делает написание CASE довольно утомительным и может привести к ошибке.

Как мне поступить с назначением номера подкатегориизначения без использования CASE и без необходимости написания огромного количества кода?

Я пытался найти решение здесь или в Интернете, но пока не нашел ничего, касающегося моего вопроса.

ПРИМЕЧАНИЕ. У меня есть доступ только для чтения к этой базе данных.

1 Ответ

1 голос
/ 24 июня 2019

Вы можете определить таблицу поиска:

create table pathCategories (
    pathCategoryId int auto_increment primary key,
    prefix varchar(255)
);

insert into pathCategories (prefix)
    values ('/Local/Activities'),
           ('/Local/Automotive'),
           . . .;

Тогда запрос будет выглядеть так:

select t.*, pc.pathCategory
from t left join
     pathCategories pc
     on t.path like concat(pc.prefix, '%');
...