删除表中的重复行

时间:2014-09-22 15:55:29

标签: mysql

我有两张桌子。第一,观察,有:

Observation_Id, sender_id, lat, lon, timestamp

第二个,测量有:

Measurement_Id, Observation_Id, type

我有很多观察和许多测量。每个观察可以有一个或多个测量,但每种类型只有一个。

我想删除一种类型的每个测量行(例如:类型:' a'),它们具有相同的obs lat,lon和timestamp。只剩下这种类型之一。

所以我有一些类型的测量:' a'属于不同的观察但这些观察具有相同的纬度,经度和时间戳。

我尝试过:

delete m1 from measurement m1, measurement m2 
where m1.Observation_Id > m2.Observation_Id 
AND   m1.type='a' AND m1.type = m2.type 
AND   m1.Measurement_Id <> m2.Measurement_Id;

但我认为它没有成功。

所以,我希望重复一些观察,我想删除最高观察点的一个测量值,留下最低值。

我认为方法是这样的:采取所有具有我想要的sender_id的观察,在我想要的时间和重复的时间戳之间的日期(计数&gt; 1)

然后获得具有observe_Id IN的测量选择,类型计数&gt; 1.删​​除那些行。但我不知道如何创建查询

1 个答案:

答案 0 :(得分:0)

从您的查询中我相信您想删除条目从测量表中键入Observation_Id。关于此,您可以使用以下查询删除类型a。

的整个条目
delete from observation where Observation_Id=(select Observation_Id from measurement where type=a);

如果您想保留一个条目并删除其他条目,请从观察表中选择Observation_Id的最小值或最大值。并删除不等于最小值或最大值限制的其他条目。