Sqlite
SQLite - 刪除多列中的重複項
我有下表:
C1 | C2 | C3 ------------- A | X | 1 A | Y | 2 B | X | 3 B | Y | 4
我想對第 1 列和第 2 列進行重複數據刪除,並從第 3 列中選擇最大值。如果第 1 行和第 2 行在第 1 列中都有“A”,那麼它們是重複的。由於第 3 行和第 4 行在第 1 列中都有“B”,因此它們是重複的。由於第 1 行和第 3 行在第 2 列中都有“X”,因此它們是重複的。最後,由於第 2 行和第 4 行在第 2 列中都有“Y”,因此它們是重複的。因此,前四行將被視為重複,結果應返回第 4 行,因為它包含第 3 列中的最大值。我無法弄清楚如何跨多列進行重複數據刪除。任何意見,將不勝感激。
WITH RECURSIVE cte AS ( SELECT c1, c2, c3, 1 level FROM test UNION ALL SELECT cte.c1, t2.c2, GREATEST(cte.c3, t2.c3), level+1 FROM cte JOIN test t1 ON cte.c2 = t1.c2 JOIN test t2 ON t1.c1 = t2.c1 WHERE t2.c3 != cte.c3 AND level < ( SELECT MAX(c3) FROM test ) UNION ALL SELECT t2.c1, cte.c2, GREATEST(cte.c3, t2.c3), level+1 FROM cte JOIN test t1 ON cte.c1 = t1.c1 JOIN test t2 ON t1.c2 = t2.c2 WHERE t2.c3 != cte.c3 AND level < ( SELECT MAX(c3) FROM test ) ) SELECT cte.c1, cte.c2, MAX(cte.c3) c3 FROM cte JOIN test ON (cte.c1, cte.c2) = (test.c1, test.c2) GROUP BY c1, c2 HAVING c3 = MAX(test.c3);