我有两张桌子。第一,观察,有:
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.删除那些行。但我不知道如何创建查询
答案 0 :(得分:0)
从您的查询中我相信您想删除条目从测量表中键入Observation_Id。关于此,您可以使用以下查询删除类型a。
的整个条目delete from observation where Observation_Id=(select Observation_Id from measurement where type=a);
如果您想保留一个条目并删除其他条目,请从观察表中选择Observation_Id的最小值或最大值。并删除不等于最小值或最大值限制的其他条目。