我有下表
|| some_id || value_A || value_B || timestamp ||
-------------------------------------------------
|| 3 || 1000 || 1 || 1362979652 ||
|| 3 || 1001 || 2 || 1362979652 ||
|| 4 || 1002 || 2 || 1362979652 ||
|| 4 || 1003 || 3 || 1362979652 ||
|| 4 || 1004 || 3 || 1362979652 ||
|| 3 || 1000 || 1 || 1362980605 ||
|| 3 || 1001 || 1 || 1362980605 || <-- value_b is different here
|| 4 || 1002 || 2 || 1362980605 ||
|| 4 || 1003 || 3 || 1362980605 ||
|| 4 || 1004 || 2 || 1362980605 || <-- value_b is different here
该表由一组数据组成,然后插入一组几乎相同的数据(具有不同的时间戳)。value_B
正如您在上面看到的,数据并不完全相同,因为某些行中的数据不同。
我需要做的是删除所有重复的行,并将旧的类似行替换为新行(新行具有较新的时间戳)。
我已经尝试了几种不同的内部连接方法,但我遇到了困难。我认为这是一个两部分的事情。首先,我需要简单地摆脱重复项:
|| some_id || value_A || value_B || timestamp ||
-------------------------------------------------
|| 3 || 1000 || 1 || 1362979652 ||
|| 3 || 1001 || 2 || 1362979652 ||
|| 4 || 1002 || 2 || 1362979652 ||
|| 4 || 1003 || 3 || 1362979652 ||
|| 4 || 1004 || 3 || 1362979652 ||
|| 3 || 1000 || 1 || 1362980605 || <-- will be deleted
|| 3 || 1001 || 1 || 1362980605 ||
|| 4 || 1002 || 2 || 1362980605 || <-- will be deleted
|| 4 || 1003 || 3 || 1362980605 || <-- will be deleted
|| 4 || 1004 || 2 || 1362980605 ||
接下来,如果剩下的新行具有相同some_id
且相同的value_A
值,我需要删除任何旧行。
|| some_id || value_A || value_B || timestamp ||
-------------------------------------------------
|| 3 || 1000 || 1 || 1362979652 ||
|| 3 || 1001 || 2 || 1362979652 || <-- will be deleted
|| 4 || 1002 || 2 || 1362979652 ||
|| 4 || 1003 || 3 || 1362979652 ||
|| 4 || 1004 || 3 || 1362979652 || <-- will be deleted
|| 3 || 1001 || 1 || 1362980605 ||
|| 4 || 1004 || 2 || 1362980605 ||
所以处理后,上面的结果表如下所示:
|| some_id || value_A || value_B || timestamp ||
-------------------------------------------------
|| 3 || 1000 || 1 || 1362979652 ||
|| 4 || 1002 || 2 || 1362979652 ||
|| 4 || 1003 || 3 || 1362979652 ||
|| 3 || 1001 || 1 || 1362980605 ||
|| 4 || 1004 || 2 || 1362980605 ||
我正在寻找一种有效的解决方案,因为实际上,我正在使用的表有几千行数据。所以效率是关键。