2011-04-18 108 views
2

我有一个表,我想获得一行,其中包含每列的所有最新非空属性(不包括每列的单独查询,对我来说并不高雅)。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 

正如我所说的,我知道如何选择我分别要为每列,但我不知道是否有更好的方法去做吧。如果不需要,不需要对可怜的数据库征税。

回答

3

可能比这更好的方式,但它是星期一,我不太自觉尚未:

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; 

基本上,遍历数据库中的每一行,并建立了“最新”的值,当您去,然后反转结果集并仅选择具有最高时间值的那个

相关问题