2013-09-25 43 views
1

我有一個很大的問題,我一直在努力解決。閱讀舊的類似問題並沒有取得豐碩成果。從parentid(MySQL)分組時選擇* from max id

我的表格有[id],[parentid],[data1],[data2]等欄目 有些情況下只有一個記錄具有相同的[parentid],而其他人具有2-10。

我想按[parentid]進行分組,並打印出最大[id]記錄的所有數據。因此,我只會獲得共享相同[parentid]號碼的記錄的所有「最新」細節。

我希望這是以任何方式可以理解的目標:)。

我也試着在Crystal Reports XI和Qlikview 11中解決這個問題,但沒有取得重大成功。

在此先感謝您的幫助!

+1

歡迎SO。如果您提供示例輸入和預期輸出,那麼有人會回答更好的機會。在sql問題的情況下,始終歡迎sqlfiddle。 – zero323

回答

1

您的ID列中的值是否可以重複使用?如果不是,那麼juergen的答案將起作用。 如果可以重複使用它們,則需要在查詢中使用同一個表兩次,一次獲取每個父ID的最大ID,一次獲取每個最大ID /父ID的行。 像這樣:

select 
t1.* 
from aTable t1, 
(select parentid, max(id) as id 
from aTable group by parentid) t2 
where t1.id = t2.id 
and t1.parentid = t2.parentid 

SQLFIddle!

+0

Andrew的解決方案被證明是卓有成效的,但毫無疑問,Juergen也是有效的觀點。我試圖尋找太難的解決方案。感謝兩位快速回答! – ParoniAnttila

0
select * from your_table 
where id in 
(
    select max(id) 
    from your_table 
    group by parentid 
) 
1

一個解決辦法是:

腳本:

Table: 
Load id, 
    parentid, 
    d1, 
    d2 
inline 
[ 
    id, parentid, d1, d2 
    1, 0, Hep, 01-04-2010 
    2, 1, Hap, 09-04-2010 
    3, 1, Hup, 10-10-2012 
    4, 2, Bep, 01-12-2009 
    5, 4, Ceg, 02-10-2010 
    6, 4, Pen, 05-10-2009 
    7, 4, Heg, 01-10-2009 
    8, 4, Ran, 08-01-2010 
]; 

然後我添加字段ID的parentId到儀表板。 要計算結果,請使用表格圖,其中是維度。添加公式

=max(id) 

並將其命名爲 'MAX(ID)'

然後你得到以下結果:

enter image description here