MySql - получение строки из последних ненулевых значений в каждом столбце - PullRequest
3 голосов
/ 18 апреля 2011

У меня есть таблица, и я хотел бы получить строку, содержащую все последние ненулевые атрибуты для каждого столбца (без объединения отдельных запросов для каждого столбца, что мне не кажется элегантным).

Пример:

A     B     C     Time
1     a     7     0
NULL  NULL  3     1
3     NULL  4     2
NULL  NULL  6     3

Результат, который я ищу:

A     B     C
3     a     6

Как я уже сказал, я знаю, как выбрать то, что я хочу для каждого столбца в отдельности, но мне было интересно, есть ли лучший способ сделать это. Нет необходимости облагать налогом плохую базу данных, если она не нужна.

1 Ответ

3 голосов
/ 18 апреля 2011

Возможно, лучший способ, чем этот, но сегодня понедельник, и я еще не совсем в сознании:

select @a:=null, @b:=null, @c:=null;
select A,B,C from (
    select @a:=coalesce(A,@a) as A, @b:=coalesce(B,@b) as B, @c:=coalesce(C,@) as C time
    from yourtable
    order by time asc
) as y order by time desc limit 1;

По сути, итерация по каждой строке в базе данных и создание «последнего» значения по мере продвижения, затем обратный набор результатов и выбор только того, который имеет наибольшее значение времени

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...