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);
答案 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')