删除SQL查询ms访问中的重复项

时间:2011-07-22 18:46:38

标签: sql ms-access

A)假设一张桌子。我想要执行DELETE功能。 这是在ms access 2003 sql查询中完成的。 注意有许多条目。在几十万到几百万的范围内。希望如果有一个代码可以很好地处理大型数据集。只有3种情绪。

 DayNumber   Mood
     1       Mad
     2       Sad
     2       Happy 
     2       Sad
     3       Sad 
     3       Happy

当一天中有一些情绪时,我们只想保留最重要的情绪。 所以让我们有一个删除功能删除重复的天。首先删除不太重要的情绪。情绪的重要性是快乐>疯狂>悲伤。所以我想:

 DayNumber   Mood
     1       Mad
     2       Happy
     3       Happy 

B)我第一次开始时更容易没有三个心情jsut二选​​项。快乐&悲伤的地方

 DayNumber   Mood
     1       Sad
     2       Sad
     2       Happy 
     3       Sad 
     3       Happy

我将在理想情况下获得

 DayNumber   Mood
     1       Sad
     2       Happy 
     3       Happy

无论你做第一个例子还是为我做secodn无关紧要我都被卡住了!

这就是我到目前为止的第二个问题。但是它没有用,因为我在where子句中有一个聚合函数。

DELETE FROM Table
WHERE (Mood='Sad') and (COUNT(DayNumber)=2);

2 个答案:

答案 0 :(得分:1)

如果你有一个小&固定数量的情绪,你可以像这样硬连线层次结构:

DELETE FROM Table a
WHERE
(a.Mood='Sad' 
AND EXISTS
  (SELECT 1
   FROM Table b
   WHERE b.DayNumber = a.DayNumber
   AND b.Mood in ('Happy','Mad')))
OR
(a.Mood = 'Mad'
AND EXISTS
  (SELECT 1
   FROM Table c
   WHERE c.DayNumber = a.DayNumber
   AND c.Mood = 'Happy')))

答案 1 :(得分:1)

DELETE FROM Table where Mood='Sad' AND DayNumber IN (SELECT DayNumber FROM Table WHERE Mood = 'Happy')