2017-08-11 185 views
0

因此,我一直在嘗試在這裏找到適用於我的情況的答案,但我在找到答案時遇到了一些問題。基本上,我有一張包含10,000行或更多行的表格,表格中還有一些重複的內容。例如,我有3個單元,每個單元都有一個重複的unit_id。這些單位也有一個長/緯度與他們相關聯。我將如何去選擇每個獨特設備的最新長/經度?如何從一列中選擇具有不同值的多列

entry_id | unit_id | lat | long 
1   123  45  62 
2   123  15  24 
3   123  12  11 
4   456  55  31 
5   456  01  12 
6   123  15  46 

entry_id越高,條目越新。所以在這個例子中,我想選擇條目5和6,以便我有這些設備最近的緯度/經度。有任何想法嗎?

回答

0

假設「最近」是指最高entry_id,這裏是一個方法:

select t.* 
from t 
where t.entry_id = (select max(t2.entry_id) 
        from t t2 
        where t2.unit_id = t.unit_id 
        ); 

10,000行是不是「極長表」。事實上,它是由數據庫標準相當小。如果性能是一個問題,創建一個索引:

create index idx_t_unit_id_entry_id on t(unit_id, entry_id); 
+0

這幾乎工程..而且它讓我看到最近的值。我需要這個來顯示多個不同的unit_id的值,儘管 –

+1

「我將如何去選擇每個獨特設備的最新長/經度?」。如果您有其他問題,請提出一個新問題。 –

0

您可以使用SELF JOINGROUP BY,例如:

SELECT t.* 
FROM table t JOIN 
(SELECT unit_id, MAX(entry_id) AS `entry_id` 
FROM table 
GROUP BY unit_id 
) t1 ON t.entry_id = t1.max_id; 
相關問題