Найдите последний уровень, прежде чем в столбцах начнет появляться значение NULL

#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;