MySql - 从每个列中的最新非空值获取一行
问题描述:
我有一个表,我想获得一行,其中包含每列的所有最新非空属性(不包括每列的单独查询,对我来说并不高雅)。MySql - 从每个列中的最新非空值获取一行
例子:
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
正如我所说的,我知道如何选择我分别要为每列,但我不知道是否有更好的方法去做吧。如果不需要,不需要对可怜的数据库征税。
答
可能比这更好的方式,但它是星期一,我不太自觉尚未:
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;
基本上,遍历数据库中的每一行,并建立了“最新”的值,当您去,然后反转结果集并仅选择具有最高时间值的那个