如何从一列中选择具有不同值的多列
问题描述:
因此,我一直在尝试在这里找到适用于我的情况的答案,但我在找到答案时遇到了一些问题。基本上,我有一张包含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);
答
您可以使用SELF JOIN
与GROUP 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;
这几乎工程..而且它让我看到最近的值。我需要这个来显示多个不同的unit_id的值,尽管 –
“我将如何去选择每个独特设备的最新长/经度?”。如果您有其他问题,请提出一个新问题。 –