#mysql #sql
#mysql #sql
Вопрос:
У меня максимум 10 уровней статьи. Я хочу найти максимальный уровень статьи из таблицы, структура которой выглядит как изображение ниже.
например, для статьи максимальный уровень находится в F5. также, если есть такое же значение от F2 до F10, мы должны игнорировать эту запись.
Пожалуйста, помогите.
С уважением, R
Комментарии:
1. Ваша таблица не имеет оптимального дизайна, и столбцы F в идеале должны отображаться в отдельных строках , а не в столбцах.
2. Таблица базы данных — это не электронная таблица. Возможно, вы захотите начать все сначала или отказаться от идеи использования RDBMS.
Ответ №1:
Вы можете использовать гигантское case
выражение:
select f1,
(case when max(f10) is not null then 10
when max(f9) is not null then 9
when max(f8) is not null then 8
when max(f7) is not null then 7
when max(f6) is not null then 6
when max(f5) is not null then 5
when max(f4) is not null then 4
when max(f3) is not null then 3
when max(f2) is not null then 2
end) as max_level
from t
where not (f2 <=> f3 and f3 <=> f4 and . . . )
group by f1;