2

このデータを含むテーブルがあります

ID、アーカイブ ID、EAN、インデックス、日付、(...)

同じアーカイブ ID、同じ ean、しかし異なるインデックスを持つアイテムがいくつかあります。

したがって、この場合、古い (日付に基づく) アイテムを削除したいので、archive_id/index の組み合わせごとに結果が 1 つしかないという結果になります。

4

3 に答える 3

2

次の(テストされていない)が機能するはずです:

DELETE FROM someTable WHERE EXISTS ( SELECT id FROM someTable AS subqTable WHERE
subqTable.id = someTable.id
AND subqTable.ean = someTable.ean
-- and other equality comparisons
AND subqTable.date AFTER someTable.date)
于 2013-07-12T10:34:43.290 に答える
0
delete t1
from your_table t1
left join 
(
  select archive_id, ean, min(date) as mdate
  from your_table
  group by archive_id, ean
) t2 on t1.archive_id = t2.archive_id
     and t1.ean = t2.ean
     and t1.date = t2.mdate
where t2.mdate is null
于 2013-07-12T10:36:32.500 に答える