2011-04-18 160 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; 

基本上,遍歷數據庫中的每一行,並建立了「最新」的值,當您去,然後反轉結果集並僅選擇具有最高時間值的那個

相關問題