如何从一列中选择具有不同值的多列

问题描述:

因此,我一直在尝试在这里找到适用于我的情况的答案,但我在找到答案时遇到了一些问题。基本上,我有一张包含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,以便我有这些设备最近的纬度/经度。有任何想法吗?

假设“最近”是指最高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

“我将如何去选择每个独特设备的最新长/经度?”。如果您有其他问题,请提出一个新问题。 –

您可以使用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;